我正在尝试编写一个程序来读取.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;
}
答案 0 :(得分:2)
根据http://en.wikipedia.org/wiki/Netpbm_format,文件以两个字节的序列开头:P1
,P2
,P3
(作为人类可读文本 - ASCII)。因此,将其读入int
将无效。您应该在char
(对于P
),然后在另一个char
中阅读该号码,并找出您的文件的格式。然后根据格式采取进一步措施。