我一直在尝试用文件中的字符串填充结构数组,但 fscanf 不会这样做。代码编译得很好,但是当我测试它时(如果数组实际上已填充),什么也没有出现,就好像什么也没做一样。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct p{
char name[21];
char lname[21];
} Person;
int main() {
FILE *in;
Person array[100];
int i, n;
in=fopen("people.txt", "r");
if (in == NULL ) {
fprintf(stderr, "Failed to open\n");
exit(EXIT_FAILURE);
}
n=0;
while( fscanf(in, "%s %s", array[n].name, array[n].lname) != EOF)
n++;
*// Here I've tried even with >0 or == 2, nothing worked) //*
fclose(in);
for (i=0;i<n;i++)
printf("%s %s\n", array[i].name, array[i].lname);
return 0;
}
这是 .txt 文件:
Steven Stevenson
Mark Ronson
Jeff Jefferson
Kyle Roger
只是一个名字列表,仅此而已
这是输出:
最佳答案
我运行了这个程序,它运行得很好。我创建了一个包含几个名字的 people.txt 。每行的名字和姓氏之间用一个空格分隔。
您可能想检查输入文件的格式。 fscanf 可能期望名称和姓氏仅用一个空格分隔。
关于c - fscanf 不读入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29613850/