首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过fget从C中的文本文件读取文本

通过fget从C中的文本文件读取文本
EN

Stack Overflow用户
提问于 2022-11-06 13:53:36
回答 1查看 29关注 0票数 0

我的意图是阅读每一行的前5个单词。但是当我运行这个代码时,文本文件中的每个单词都会打印出来。有人能告诉我为什么会这样吗?

代码语言:javascript
复制

int main(空){

代码语言:javascript
复制
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;

}

代码语言:javascript
复制

我的意图是阅读每一行的前5个单词。但是当我运行这个代码时,文本文件中的每个单词都会打印出来。有人能告诉我为什么会这样吗?

EN

回答 1

Stack Overflow用户

发布于 2022-11-06 16:07:52

您可能希望使用字符串函数"strtok“来拆分和计数单词。使用您的初始代码,我添加了以下调整。

代码语言:javascript
复制
#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;
}

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

代码语言:javascript
复制
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.

以下是结果的输出。

代码语言:javascript
复制
@Dev:~/C_Programs/Console/Parse/bin/Release$ ./Parse 
Now is the time for 
The quick brown fox jumps 

有关使用"strtok“函数的更多信息,您可能需要参考此链接strtok用法

试一试,看看它是否符合你的项目精神。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74336477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档