2013-10-15 1 views
0

У меня есть неприятная проблема. Я получаю следующую ошибку:несовместимые типы указателей, передающие 'char *' параметру типа 'FILE *' (aka 'struct__sFILE *')

incompatible pointer types passing 'char*' to parameter of type FILE*'(aka 'struct__sFILE*')".

Кто-нибудь знает, как я исправлю эту проблему?

void load_myFile(char my_file_name[]) { 
    if(my_file_name != NULL) { 
     int op_code, L_code, M_code, i = 0; 
     while(my_file_name != NULL) { 
      fscanf(my_file_name, "%d", &op_code); 

      if(i > MAX_CODE_LENGTH) { 
       printf("Program is longer than MAX_CODE_LENGTH\n"); 
       exit(ERROR_PROG_TOO_LONG); 
      } 
      fscanf(my_file_name, "%d", &L_code); 
      fscanf(my_file_name, "%d", &M_code); 

      code[i].op = op_code; 
      code[i].l = L_code; 
      code[i].m = M_code; 
      i++; 
     } 
     code_size = i; 
    } 
+1

fscanf() принимает ФАЙЛ *, который вы можете получить от fopen(). –

+0

Используйте fopen как @CharlieBurns. Не забудьте вызвать fclose на FILE * после того, как вы закончите. – hulkmeister

ответ

1

Согласно вашей декларации, my_file_name представляет собой строку char, а не указатель на FILE. Для функции fscanf требуется указатель на FILE. Поэтому вы получили такую ​​ошибку.

Если вы хотите, чтобы это была строка, используйте sscanf вместо fscanf для извлечения данных. В противном случае объявите указатель FILE, откройте файл и прочитайте его.

+0

Большое спасибо! – knrkn