c - fscanf 不读入数组

标签 c arrays scanf

我一直在尝试用文件中的字符串填充结构数组,但 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

只是一个名字列表,仅此而已

这是输出:

Notice the black space inbetween

最佳答案

我运行了这个程序,它运行得很好。我创建了一个包含几个名字的 people.txt 。每行的名字和姓氏之间用一个空格分隔。

您可能想检查输入文件的格式。 fscanf 可能期望名称和姓氏仅用一个空格分隔。

关于c - fscanf 不读入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29613850/

相关文章:

C sscanf : why is this segfaulting?

c - 正确处理 TCP 带外数据

c - bsearch() 总是返回空指针

c - 像 8051 这样的 8 位微 Controller 上的指针大小是多少?

c - 你知道一个很好的 C 语言正则表达式库吗?

java - 如何获取字符串中的数字,然后计算它们的平均值?

javascript - Rxjs 可以更改它以返回 bool 值吗?

c - 在 C 中使用 scanf 读取直到破折号

c - 名称 "scanf"和说明符 "%g"的起源是什么?

c - 为什么当我超出另一个数组的边界时 printf() 的输出会发生变化?