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

时间:2014-03-24 21:46:54

标签: c file-io ppm

我正在尝试编写一个程序来读取.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 个答案:

答案 0 :(得分:2)

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