不兼容的指针类型将'char *'传递给'FILE *'类型的参数(又名'struct__sFILE *')

问题描述:

我有一个令人沮丧的问题。我得到以下错误:不兼容的指针类型将'char *'传递给'FILE *'类型的参数(又名'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()获得的FILE *。 –

+0

使用fopen作为@CharlieBurns说。完成后请不要忘记在FILE *上调用fclose。 – hulkmeister

根据您的声明,my_file_name是一个char字符串,而不是指向FILE的指针。虽然函数fscanf需要一个指向FILE的指针。所以你有这样的错误。

如果您希望它是一个字符串,请使用sscanf而不是fscanf来提取数据。否则,声明一个FILE指针,打开一个文件并从中读取。

+0

非常感谢! – knrkn