FILE I/O показывает ошибку компиляции в C

Я пытаюсь записать символ в файл на C, но этот код:

case 4: //If the user types 4 (reset)
FILE * fp;

FILE *fp;
fp = fopen("settings.txt", "w");
fprintf(fp, "a");
int fclose(FILE * fp);

break;

показывает эту ошибку:

fileio.c:72:5: error: expected expression
                            FILE * fp;

(Да, я знаю, что использовал file * fp два раза, но без обоих, это показывает еще больше ошибок.)

Как я могу это исправить?

3 ответа

Здесь происходит несколько проблем. Вы не можете объявлять новые переменные в выражении case. Объявите свой fp вне выключателя. Кроме того, объявите это только один раз, и когда вы закроете его, вызовите функцию вместо написания нового прототипа функции:

fclose(fp);

Есть несколько проблем с этим кодом. Основная проблема, с которой вы сталкиваетесь, заключается в том, что вы не можете объявлять переменные непосредственно в операторе case. Если вам нужно объявить переменные там, вы должны заключить блок кода в curlies, таким образом:

case 4: //If the user types 4 (reset)
    {
        FILE *fp;
        fp = fopen("settings.txt", "w");
        fprintf(fp, "a");
        fclose(fp);
        break;
     }

Обратите внимание, что я также исправил ваш вызов fclose() - то, что у вас было неверно.

В close В заявлении вы снова определяете новый указатель. Попробуй просто

FILE *fp;
fp = fopen("settings.txt", "w");
fprintf(fp, "a");
fclose(fp);
Другие вопросы по тегам