来自以下格式的文本文件:
Name Surname ID Address
Name Surname ID Address
Name Surname ID Address
我需要提取每一个并将其放入一个变量中。
我尝试了以下两种方法:
while(fscanf(fp, "%s,%s,%d,%s\n", name2,surname2,&id2,address2) != EOF){
printf("Name: %s, Surname: %s, ID: %d, Address: %s\n",
&name2, &surname2, &id2, &address2);
}
这给了我错误的结果,它每行只读取一个单词,所以结果是这样的:
Name: Name Surname:@,a ID:2272012 Address: ?" Name: Surname Surname:@,a ID:2272012 Address: ?" Name: ID Surname:@,a ID:2272012 Address: ?" Name: Address Surname:@,a ID:2272012 Address: ?"
And the other method I used was:
while(fscanf(fp, "%s,%s,%d,%s\n", name2,surname2,&id2,address2) == 4){
printf("Name: %s, Surname: %s, ID: %d, Address: %s\n",
&name2, &surname2, &id2, &address2);
}
什么都不读,什么也没有发生。
我正在读取的文件是 .dat,它用于作业,因此只能使用 .dat。
最佳答案
- 格式字符串中不应该有逗号,除非数据中有逗号,但您没有显示。
- 如果任何字段包含空格,这将不起作用,因为
%s
将停止。 - 您需要显示更多输入 .dat 文件。
- 通常最好使用
fgets()
读取整行,然后再担心解析它。
关于c - 使用 fscanf 多个值在 C 中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14199155/