为什么在这段代码中,fgets在不应该返回null时?

时间:2013-12-03 09:06:13

标签: c file debugging fgets

我正在编写一个程序,其中一部分如下:

#define BUFFSIZE 2000
while( fgets(buff, BUFFSIZE - 1, fPtr) != NULL)
{
    //how many words is read from the source file in the current line
    int wordread = 0;

    word = strtok(buff, punc);
    //one word read
    while( word != NULL)
    {
        //sorting
        int k = 0;
        while(strcmp(word, words[k]) < 0)
            k++;
        if(strcmp(word, words[k]))
        {
            last++;
            for(int l = last; l >= 0; l--)
                strcpy(words[l + 1],words[l]);
            strcpy(words[wordread],word);
        }
        index[last][lineread]++;

        wordread++;//go to next word

        word = strtok(NULL, punc);
    }
    lineread++;//go to next line
}

但我明白编译器不会进入第一个

while( fgets(buff, BUFFSIZE - 1, fPtr) != NULL)

我知道这个fgets最初会返回NULL。但是fPtr有一个正确的地址,并且在地址中有一些数据文件。

FILE *fPtr = fopen(argv[1], "r");

和buff的定义是:

char buff[BUFFSIZE];

任何人都可以帮忙吗?如果需要整个代码,请告诉我写下所有代码。

1 个答案:

答案 0 :(得分:0)

编译器没有进入第一个循环的问题是它应该读取的文件,不存在。它正在返回NULL