首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >像阅读文本一样逐行阅读图像

像阅读文本一样逐行阅读图像
EN

Stack Overflow用户
提问于 2019-02-22 01:51:48
回答 2查看 76关注 0票数 0

我有一个文本文件,它的结构如下:

代码语言:javascript
复制
P2
# CREATOR: GIMP PNM Filter Version 1.1
445 243
255
108
107
104
102
102
[...]

我想要逐行阅读这个文本文件。所以我写了这段代码:

代码语言:javascript
复制
int main(void) {

     char str[50];
        FILE *fp;
        fp = fopen("/home/user/Downloads/file.pgm", "r");

        if(fp == NULL)
        {
            printf("Error opening file\n");
            exit(1);
        }

        printf("Testing fgets() function: \n\n");
        printf("Reading contents of myfile.txt: \n\n");

        while( fgets(str, 30, fp) != NULL )
        {
            puts(str);
        }

        fclose(fp);

        return 0;
}

然而,它给出了一个奇怪的输出。我不知道错误出在哪里。代码看起来没问题。你觉得呢?

执行:

EN

回答 2

Stack Overflow用户

发布于 2019-02-22 02:08:27

您将fgets限制在30个字符以内,并且注释

创建者: GIMP PNM过滤器1.1版

是38个字符。

票数 1
EN

Stack Overflow用户

发布于 2019-02-22 01:54:03

这是一个简单的\n,当它被读取时也会返回\n (它不会被丢弃),而print会让您在打印之后添加另一个\n,因此您有2个fgets创建了一个空行

fputs(stdout, str);替换puts(str);,就不会有空行了

注意:输出并不对应于文件的开头,可能是它的结尾?

如果我把

P2 #创建者: GIMP PNM过滤器版本1.1 445 243 255 108 107 104 102 102

在执行提供的文件中:

代码语言:javascript
复制
pi@raspberrypi:/tmp $ ./a.out
Testing fgets() function: 

Reading contents of myfile.txt: 

P2

# CREATOR: GIMP PNM Filter Ve
rsion 1.1

445 243

255

108

107

104

102

102

一行被删掉,因为超过29个字符

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

https://stackoverflow.com/questions/54813297

复制
相关文章

相似问题

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