我正在读编程的第一年,正在读高等教育。我已经在你的网站上进行了很好的搜索,并在谷歌上搜索了fwrite、fopen、类型invloved上的任何内容,以及我的程序逻辑中的其他方法,但答案是还没有出来。我已经调试了好几个小时了。我正在写一篇。BMP转换为文件,在编译时收到以下错误消息:
gcc-g-Wall-Weror-std=c99-o测试工作。c-lm
正在工作。c:在函数"serveBMP"中:
正在工作。c:190:47:错误:未声明"outputFile"(此函数中首次使用)fwrite(&pixelColor,sizeofpixelColor,1,outputFile);
以下是所有相关代码(我希望如此):
void serveBMP (int iteation) {
int countP = 0;
int countF = 0;
char pixelColor;
//To only create the file and write the header once
if (countF == 0) {
FILE *outputFile;
outputFile = fopen(BMP_FILE, "wb");
assert ((outputFile!=NULL) && "Cannot open file");
writeHeader(outputFile);
}
//Writes to BMP
while (countP<BYTES_PER_PIXEL) {
if (iteation < ITERATION_MAX) {
pixelColor = WHITE;
} else {
pixelColor = BLACK;
}
countF++;
countP++;
fwrite (&pixelColor, sizeof pixelColor, 1, outputFile);
}
}
很明显,我需要这个函数调用的循环外的头和fopen,但由于某种原因,现在流是未声明的。有人对此有可能的答案吗?或者如果需要的话,有办法解决这个问题。我已经花了相当多的时间尝试在不同的函数中创建文件,并传递file*指针,但没有成功。
谢谢,Ryan。
编辑
现在,我将FILE*输出放在if语句之外,仍然会得到相同的错误。此外,我删除了一个"我认为是一个拼写错误后;在一条线上,现在出现了错误。我试过把它放回很多组合中。太令人困惑了。。。
gcc -g -Wall -Werror -std=c99 -o test working.c -lm
working.c: In function ‘mapBMP’:
working.c:127:53: error: missing terminating ' character [-Werror]
iteation = escapeSteps (displace, inputXY);'
^
working.c:127:10: error: missing terminating ' character
iteation = escapeSteps (displace, inputXY);'
^
working.c: In function ‘serveBMP’:
working.c:185:47: error: ‘outputFile’ undeclared (first use in this function)
fwrite (&pixelColor, sizeof pixelColor, 1, outputFile);
^
将outputFile
的声明放在以if (countF == 0) { ...
:开头的块之外
//To only create the file and write the header once
FILE *outputFile;
if (countF == 0) { ... }