Можете ли вы объяснить мне, почему файл функции * не работает в C? - PullRequest
0 голосов
/ 20 декабря 2018

У меня много ошибок, и я не знаю, почему они есть?Я хочу создать файлы movies.txt и написать несколько идей.И когда я попытался собрать эту программу, я не смог.

||=== Build: Debug in projekt nr 6 (compiler: GNU GCC Compiler) ===|
XXX\...\|6|error: unknown type name 'FILE'|
XXX\...\|7|warning: data definition has no type or storage class|
XXX\...\|7|warning: type defaults to 'int' in declaration of 'plik' [-Wimplicit-int]|
XXX\...\|7|error: conflicting types for 'plik'|
XXX\...\|6|note: previous declaration of 'plik' was here|
XXX\...\|7|warning: implicit declaration of function 'fopen' [-Wimplicit-function-declaration]|
XXX\...\|7|error: initializer element is not constant|
XXX\...\|8|error: expected identifier or '(' before 'if'|
XXX\...\|14|error: expected declaration specifiers or '...' before string constant|
XXX\...\|15|error: expected declaration specifiers or '...' before string constant|
XXX\...\|15|error: expected declaration specifiers or '...' before '&' token|
XXX\...\|17|error: expected declaration specifiers or '...' before string constant|
XXX\...\|18|error: expected declaration specifiers or '...' before string constant|
XXX\...\main.c||In function 'main':|
XXX\...\main.c|45|error: expected identifier or '*' before '(' token|
||=== Build failed: 10 error(s), 3 warning(s) (0 minute(s), 0 second(s)) ===|
XXX\...\|18|error: expected declaration specifiers or '...' before '&' token|
XXX\...\|20|error: expected declaration specifiers or '...' before string constant|
XXX\...\|21|error: expected declaration specifiers or '...' before string constant|
XXX\...\|21|error: expected declaration specifiers or '...' before '&' token|
XXX\...\|23|error: expected ')' before string constant|
XXX\...\|24|warning: data definition has no type or storage class|
XXX\...\|24|warning: type defaults to 'int' in declaration of 'fclose' [-Wimplicit-int]|
XXX\...\|24|warning: parameter names (without types) in function declaration|
||=== Build failed: 15 error(s), 6 warning(s) (0 minute(s), 0 second(s)) ===|

Это мой код data.c (не main.c):

   char title, genre;
int year;

FILE *plik;
plik=fopen("movies.txt", "a");
if(plik == NULL)
   {
   perror("Błąd otwarcia pliku");
   exit(-10);
   }

printf("Podaj nazwe filmu: ");
scanf("%s", &title);

printf("Podaj rok produkcji: ");
scanf("%s", &year);

printf("Podaj gatunek filmu: ");
scanf("%s", &genre);

fprintf(plik,"%s %s %d", title,genre,year);
fclose(plik);

PS.Как подключить этот data.c к main.c в случае переключения функций?

1 Ответ

0 голосов
/ 20 декабря 2018

FILE * прекрасно работает на C, но ваш код должен быть действительным.Из комментариев его ясно, твоего не было.Ни один язык программирования не может угадать ваш путь через него, но C - особенно плохой выбор, если вы выберете такой подход, поскольку он очень не простит.

вот как показать код.Обратите внимание, что я включил весь соответствующий код, только соответствующий код, показал, как я его построил, как я его вызывал и что происходило, когда он работал.Если бы я только показал части внутри main(), это было бы не так.

$ cat t.c ; gcc -o t2 t.c && { ./t2; ./t2; ./t2; cat movies.txt;}

#include <stdio.h>
#include <unistd.h>

int main(void){
  FILE* f = fopen("movies.txt", "a");
  if( f == NULL) {
      perror("Couldn't open file");
      return 1;
  }
  fprintf(f, "Wrote to file from PID %d\n", getpid());
}

Wrote to file from PID 71729
Wrote to file from PID 71741
Wrote to file from PID 71747
Wrote to file from PID 71767
Wrote to file from PID 71782
Wrote to file from PID 71783
Wrote to file from PID 71784
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...