在C语言中通过fgets阅读文本文件中的文本

arknldoa  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(175)

我的意图是读每一行的前5个字。2但是当我运行这个代码时,文本文件中的每个字都打印出来了。3谁能告诉我为什么会这样?
int main(void){

char const* const fileName = "text.dat";

FILE* file = fopen(fileName, "r");

if (!file) {
    printf("\n Unable to open : %s ", fileName);
    return -1;
}

char line[50];

while (fgets(line, 5, file)) {
    printf("%s", line);
}
fclose(file);
return 0;

}
我的意图是读每一行的前5个字。2但是当我运行这个代码时,文本文件中的每个字都打印出来了。3谁能告诉我为什么会这样?

wj8zmpe1

wj8zmpe11#

您可能希望使用字符串函数“strtok”来拆分和计算单词。

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

int main()
{
    char const* const fileName = "text.dat";

    FILE* file = fopen(fileName, "r");

    if (!file)
    {
        printf("\n Unable to open : %s ", fileName);
        return -1;
    }

    char line[129];
    const char delim[2] = " ";
    char * wd;

    while (fgets(line, 128, file))
    {
        wd = strtok(line, delim);
        int i = 0;
        while (i < 5 && wd != NULL)
        {
            printf("%s ", wd);
            wd = strtok(NULL, delim);
            i++;
        }
        printf("\n");
    }
    fclose(file);

    return 0;
}

然后使用以下数据建立一个简单的文本文件。

Now is the time for all good men to come to the aid of their country.
The quick brown fox jumps over the lazy dog.

以下是产生的输出。

@Dev:~/C_Programs/Console/Parse/bin/Release$ ./Parse 
Now is the time for 
The quick brown fox jumps

有关使用“strtok”函数的更多信息,您可能需要参考此链接strtok usage
给予一下,看看它是否符合你的项目的精神。

相关问题