繁体   English   中英

如何在C中读取制表符分隔的文件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM