如何从文件中读取特定格式的数据?
发布时间:2020-12-16 09:31:46 所属栏目:百科 来源:网络整理
导读:我应该从类似于这种格式的文件中读取输入和参数: Add id:324 name:"john" name2:"doe" num1:2009 num2:5 num2:20 问题是我不允许使用fgets.我尝试使用fscanf,但不知道如何忽略“:”并分隔字符串’name:“john”’. 解决方法 如果您确定输入文件将是格式良
我应该从类似于这种格式的文件中读取输入和参数:
Add id:324 name:"john" name2:"doe" num1:2009 num2:5 num2:20 问题是我不允许使用fgets.我尝试使用fscanf,但不知道如何忽略“:”并分隔字符串’name:“john”’. 解决方法
如果您确定输入文件将是格式良好,非常特定的格式,fscanf()始终是一个选项,并将为您完成大量工作.下面我使用sscanf()代替只是为了说明而不必创建文件.您可以更改调用以使用fscanf()作为您的文件.
#define MAXSIZE 32 const char *line = "Add id:324 name:"john" name2:"doe" num1:2009 num2:5 num3:20"; char op[MAXSIZE],name[MAXSIZE],name2[MAXSIZE]; int id,num1,num2,num3; int count = sscanf(line,"%s " "id:%d " "name:"%[^"]" " /* use "name:%s" if you want the quotes */ "name2:"%[^"]" " "num1:%d " "num2:%d " "num3:%d ",/* typo? */ op,&id,name,name2,&num1,&num2,&num3); if (count == 7) printf("%s %d %s %s %d %d %dn",op,id,num3); else printf("error scanning linen"); 输出:
否则,我会手动解析一次读取一个字符的输入,或者如果出于任何原因使用fgets()不允许,则将其抛入缓冲区.让它缓冲比恕我直言更容易.然后你可以使用其他函数,如strtok()和诸如此类的解析. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |