fgets读取最后一行两次

时间:2019-09-18 18:49:52

标签: c fgets

我正在读取c中的文件并将其打印到屏幕上。我正在使用fgets函数逐行读取并在行中分隔字符串。

    int i;
    int j = 0;
    int ctr = 0;
    while (!feof(fp)){
            fgets(line, 256, fp);
            for(i=0;i<=(strlen(line));i++){
                    if(line[i]==' '|| line[i]=='\0'){
                            newString[ctr][j]='\0';
                            ctr++;  //for next word
                            j=0;    //for next word, init index to 0
                    }
                    else{
                            newString[ctr][j]=line[i];
                            j++;
                    }

            }
            //printf("the data line by line is: %s\n", line);

    }

    printf("\n Strings or words after split by space are :\n");
    for(i=0;i < ctr;i++)
    printf(" %s\n",newString[i]);

这是我正在读取的文件内容:
    3
    9 3 34 4 12 5 2
    6 3 2 7 1
    256 3 5 7 8 9 1



这是我的输出:
     按空格分隔后的字符串或单词是:
     3

 9
 3
 34
 4
 12
 5
 2

 6
 3
 2
 7
 1

 256
 3
 5
 7
 8
 9
 1

 256
 3
 5
 7
 8
 9
 1

但是它将最后一行打印两次,但我不知道为什么。请告诉我如何删除多余的一个。 预先感谢...

0 个答案:

没有答案