错误:fwrite:'stream'在C中未声明

时间:2015-04-21 13:54:07

标签: stream fwrite

我在第一年编程,在大学学习。我已经很好地搜索了你的网站和谷歌搜索fwrite,fopen,类型invloved,以及我的程序逻辑中的替代方法的所有内容和答案是没有即将到来的。我已经调试了好几个小时了。我正在将.BMP写入文件,并在编译时收到以下错误消息:

gcc -g -Wall -Werror -std = c99 -o test working.c -lm

working.c:在函数'serveBMP'中:

working.c:190:47:错误:'outputFile'未声明(首次在此函数中使用)     fwrite(& pixelColor,sizeof pixelColor,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);
   }
} 

我显然需要头部并在循环外部调用此函数,但现在由于某种原因未声明流。有没有人有这个可能的答案,或者如果需要解决这个问题。我已经花了很多时间尝试在不同的函数中创建文件并传入FILE *指针但没有成功。

谢谢你, 莱恩。

修改

我现在将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);
                                           ^

1 个答案:

答案 0 :(得分:0)

outputFile的声明放在以if (countF == 0) { ...开头的块之外:

//To only create the file and write the header once
FILE *outputFile;
if (countF == 0) { ... }