嗨我有这样的功能
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函数相同参数列表的替代方案请建议我
答案 0 :(得分: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,它接受指向字符的指针并向其传递文件指针(文件描述符),您想要使用fscanf if从文件中读取。您扫描的最后一个号码永远不会被存储。 “[^ \ n]”表示扫描直到换行并取代您正在扫描的最后一个数字(虽然您没有在示例中保存它)并且“* c”消耗该换行符。请参阅this。