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;
}

这只是在标准输出上给了我一个“\n”。我应该将其 fscanf 放入数组而不是 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;
}
4

1 回答 1

2

根据http://en.wikipedia.org/wiki/Netpbm_format,该文件以两个字节序列开头:P1, P2, P3(作为人类可读文本 - ASCII)。所以把它读成一个是int行不通的。您应该读入一个char(for the P),然后再读入一个char数字并找出您的文件是什么格式。然后根据格式采取进一步的步骤。

于 2014-03-24T22:03:26.930 回答