【问题标题】:using fseek() to find position entered by user使用 fseek() 查找用户输入的位置
【发布时间】:2013-01-03 20:10:12
【问题描述】:

我需要向用户询问一个ID Number,然后使用函数fseek()找到用户输入的ID Number的位置,然后才能修改记录。我有这样的事情:

printf("Enter ID Card Number: \n");
scanf("%s", editCust.idNumber);
fseek(custFile, (editCust.idNumber -1)*sizeof(struct customer), SEEK_SET);

【问题讨论】:

  • 你的问题是什么?
  • 我使用 fseek() 函数对吗?
  • 如果custFile 是您打开文件的句柄,并且第二个参数解析为正确的文件偏移量,那么您就是,我没有确认的信息。你试过了吗?
  • 我是 C 新手。我已经尝试过了,但我收到错误“二进制*的无效操作数(有 'char *' 和 'unsigned int')” custFile 是打开的文件是的,我不知道在第二个参数中放什么
  • 一旦你把所有的东西都整理好,确保custFile是以二进制模式打开的。否则,由于 CR/LF 转换问题,您可能会从 fseek 获得意外结果。

标签: c fseek


【解决方案1】:

没有。

首先,替换:

scanf("%s", editCust.idNumber);

scanf("%d", &editCust.idNumber);

%s 用于字符串值,%d 用于十进制值。

可以在here 找到很好的格式来源。

【讨论】:

  • 我的 idNumber 是一个字符串值
  • @user1928374 然后你必须把它转换成一个整数(使用strtol或类似的)来做算术。
  • 对,但是你看,你是从一个字符串值中减去 1,正如 Daniel Fischer 所解释的那样。
猜你喜欢
  • 2016-11-25
  • 1970-01-01
  • 2016-04-09
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
相关资源
最近更新 更多