fgets只读取文件的最后一行

时间:2017-01-28 02:25:34

标签: c parsing fgets scanf

更新: 正如下面的评论所说的那样,我检查了sscanf的返回值,它的quals为2.我还检查了存储在inClient [i] .name和& inClient [i] .waitTime中的内容。它们分别是Ben和4,这是第一行输入而没有其他值。我不确定问题出在哪里。

我在解析输入文本文件时遇到了麻烦。 这是我输入文件的示例。

Ben     4
Mary    12
Anna    20
Gary    10
Jane    6

这是我的代码。

int import_client(char* filename, Node* inClient)
{
    char inStr[100];
    //char* token;
    int i = 0;

    FILE* inFilePtr;
    if((inFilePtr = fopen(filename, "r")) == NULL)
        printf("Error! Unable to open input file.\n");
    else
    {
        while(fgets(inStr, 100, inFilePtr) != NULL)
        {
            printf("%s\n", inStr);
            inClient[i].name = (char*)malloc(sizeof(char) * 20);
            sscanf(inStr, "%s %d", inClient[i].name, &inClient[i].waitTime);
            printf("%s\t", inClient[i].name);
            printf("%d\n", inClient[i].waitTime);
            i++;
            //printf("I'm here\n");
        }
    }

    fclose(inFilePtr);
    return(i);
}

Node是一个带有char * name和int waitTime的结构。 inClient是Node *到空间我malloced space这个函数。

我有两个问题。 1)printf(“%s \ n”,inStr);打印并仅打印输入文件的最后一行,即Jane 60。 2)即使它打印最后一行,但数字是错误的,应该是6.我不知道为什么它最后添加0。

0 个答案:

没有答案
相关问题