首页 文章

ppm文件的基本文件I / O.

提问于
浏览
1

我正在尝试编写一个程序来读取.ppm文件并将数据保存在结构中 . 为了能够做到这一点,我需要能够打开文件,到目前为止无法正常工作 . 我显然做错了什么 . 你能看一下代码,看看能不能找出问题所在?

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

int readFile(char *filename);

int main(void)
{
    readFile("myfile.ppm");
    return 0;
}

int readFile(char *filename)
{
    int x = 0;
    FILE *pFile;
    pFile = fopen(filename, "rb");
    if(!pFile)
    {
        fprintf(stderr, "Unable to open file %s\n", filename);
        exit(1);
    }

    fscanf(pFile, "%d", &x);
    fclose(pFile);
    printf("%d\n", x);
    return 0;
}

这只是在stdout上给了我一个“\ n” . 我应该将它解析为数组而不是int吗?

根据您的反馈,我编辑了扫描到两个字符的代码:

int readFile(char *filename)
{
    char first, second = 0;
    FILE *pFile;
    pFile = fopen(filename, "rb");
    if(!pFile)
    {
        fprintf(stderr, "Unable to open file %s\n", filename);
        exit(1);
    }

    fscanf(pFile, "%c%c", &first, &second);
    fclose(pFile);
    printf("First: %c, Second: %c\n", first, second);
    return 0;
}

1 回答

  • 2

    根据http://en.wikipedia.org/wiki/Netpbm_format,文件以两个字节的序列开头: P11877199P3 (作为人类可读文本 - ASCII) . 因此将其读入 int 将无效 . 您应该读取 char (对于 P ),然后读取另一个 char 作为数字,并找出您的文件的格式 . 然后根据格式采取进一步的步骤 .

相关问题