[英]How to read tab separated file in C?
所以我有一个由空格分隔的记录文件。 它看起来像这样:
Name[Tab]Number
Name[Tab]Number
Name[Tab]Number
我也有一个结构:
typedef struct {
char name[50];
int number;
} Record;
我有一组记录,我想读入文件。当我这样做时:
for (int i = 0; i < 3; i++) {
fscanf(filePointer, "%s\t%d\n", recordArray[i].name, recordArray[i].number);
}
文件中的所有内容都被读取为 0。我做错了什么?
编辑:改成这个还是不行:
for (int i = 0; i < 3; i++) {
fscanf(filePointer, " %s %d", recordArray[i].name, &recordArray[i].number);
}
通过进行一些调试,我发现如果我手动设置每个,如下所示:
recordArray[0] = (Record) { "Name", 0 };
它有效,我可以像这样打印出来:
printf("%s %d\n", recordArray[0].name, recordArray[0].number);
这给出了输出:
Name Number
但是,如果我使用 fscanf 并打印出相同的记录,如下所示:
for (int i = 0; i < 3; i++) {
fscanf(filePointer, " %s %d", recordArray[i].name, &recordArray[i].number);
}
printf("%s %d\n", recordArray[0].name, recordArray[0].number);
我得到输出:
0
我仍然不确定发生了什么。
对于任何关心的人:
在函数的早期,我检查了文件中的行数,但忘记倒带文件指针。 这导致fscanf()
返回-1
(EOF)
因为文件指针已经移过数据。 "%s %d"
是我尝试做的正确格式化程序,我确保在recordArray[i].number
前面加上&
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.