程序读取最后一行文件两次

时间:2015-05-30 00:04:41

标签: c filereader

我正在编写一个逐行读取.txt文件的程序。到目前为止,我已经能够做到这一点,但文件的最后一行被读取了两次。我似乎无法弄清楚为什么。提前谢谢你的帮助!这是我的代码:

#include <stdio.h>
#include <string.h>

#define MAX_LINELENGTH 200

int main(int argc, char* argv[])
{
    FILE* textFile;
    char buffer[MAX_LINELENGTH];
    char strName[40];
    int numCharsTot;
    int numWordsInMesg;
    int numCharsInMesg;

    textFile = fopen(argv[1], "r");
    if(textFile == NULL)
    {
        printf("Error while opening the file.\n");
        return 0;
    }
    while(!feof(textFile))
    {
        fgets(buffer, MAX_LINELENGTH, textFile); //Gets a line from file
        //printf("Got Line: %s\n", buffer);
    }
}

2 个答案:

答案 0 :(得分:2)

<ol>

错了,你最终&#34;吃&#34;文件的结尾。你应该做

while(!feof(textFile))

相关:Why is iostream::eof inside a loop condition considered wrong?

答案 1 :(得分:1)

读取最后一行后设置

while(!feof(textFile)) { fgets(buffer, MAX_LINELENGTH, textFile); //Gets a line from file 文件指示符。

while(fgets(buffer, MAX_LINELENGTH, textFile))
{

请更正以上代码段,如下所示:

XMMatrixTransformation