0

嗨,我有这样的功能

while(fscanf(fp,"\n%d\t%s\t%s\t%X%X\t%d\t  \n",&record.Index,record.Name,record.Empcode,&record.CSN_MSB,&record.AccessRights)!=EOF)
 {
  printf("\nIndex: %d\nEmployee Name: %s\nEmpcode: %s\nCSN: %X\nAccessRights: %d\n",record.Index,record.Name,record.Empcode,record.CSN_MSB,record.AccessRights);
  sprintf(CSN_MSB_LSB,"%X", record.CSN_MSB);
  if(strncmp(CSN_MSB_LSB,str,8)==0)
  found=1;       
 }

在这段代码中,我的 fscanf 只从文件指针 fd 中读取一行,我想从文件中读取所有行。我如何使用相同的 fscanf 函数或任何包含 fscanf 函数的相同参数列表的替代方法来做到这一点,请建议我

4

1 回答 1

0

我会尝试这样的事情:

    while(fscanf(fp,"%d%s%s%X%X%[^\n]*c",
          &record.Index,record.Name,record.Empcode,
          &record.CSN_MSB,&record.AccessRights)!=EOF)
    {

不过,值得注意的是,您正在扫描 6 个项目并且只存储 5 个。此外,您正在使用 sscanf,它接受一个指向字符的指针并将文件指针(文件描述符)传递给它,如果从文件。您扫描的最后一个号码永远不会被存储。"[^\n]" 表示扫描到换行符并取代您正在扫描的最后一个数字(尽管您没有在示例中保存它),并且 "*c" 使用该换行符。看到这个

于 2013-07-03T15:49:10.727 回答