2015-04-21 3 views
0

Я нахожусь в своем первом году программирования, изучая третичный уровень. У меня был хороший поиск вашего сайта и google для чего угодно и всего на fwrite, fopen, invlosed типы, а также альтернативные методы в логике моей программы, и ответ не был готов. Я отлаживал это уже довольно много часов. Я пишу .BMP в файл, и я получаю следующее сообщение об ошибке компиляции:Ошибка: fwrite: 'stream' uneclared in C

НКУ -g -Wall -Werror -std = c99 -o тест working.c -lm

working.c: в функции 'serveBMP':

working.c: 190: 47: ошибка: 'файл_вывода' необъявленная (первое использование в этой функции) 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 *.

Thank you, Ryan.

Редактировать

Я ставлю FILE * выход за пределы, если заявление и все еще получаю ту же ошибку. Также я удалил «Я думал, что это опечатка после; на линии, и теперь я получаю ошибки. Я попытался вернуть его во многие комбинации. Так что сбивает с толку ...

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); 
             ^
+0

Мой 'c' немного ржавый, но он смотрит на меня, как вы объявляя' outputFile' внутри блока 'if', и он выходит за рамки, когда вы достигаете' fwrite', который сообщает об ошибке. –

+0

Теперь я вывожу FILE * вне инструкции if и по-прежнему получаю ту же ошибку. Также я удалил «Я думал, что это опечатка после; на линии, и теперь я получаю ошибки. Я попытался вернуть его во многие комбинации. Так запутанно ... –

ответ

0

Поместите декларацию outputFile вне блока, начиная с if (countF == 0) { ...:

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