gpt4 book ai didi

linux - 是否有一个与 fscanf 等效的 c 运行时函数,它包含相同的参数列表?

转载 作者:太空宇宙 更新时间:2023-11-04 04:14:19 25 4
gpt4 key购买 nike

嗨,我有一个这样的功能

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 函数相同参数列表的替代方案,请建议我

最佳答案

我会尝试类似的事情:

    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。您最后扫描的号码永远不会被存储。 “[^\n]”表示扫描直到换行符,并取代您正在扫描的最后一个数字(尽管您没有将其保存在示例中),而“*c”则消耗该换行符。请参阅this .

关于linux - 是否有一个与 fscanf 等效的 c 运行时函数,它包含相同的参数列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17451610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com