不兼容的指针类型将'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;
}
答
根据您的声明,my_file_name是一个char字符串,而不是指向FILE的指针。虽然函数fscanf需要一个指向FILE的指针。所以你有这样的错误。
如果您希望它是一个字符串,请使用sscanf
而不是fscanf
来提取数据。否则,声明一个FILE指针,打开一个文件并从中读取。
+0
非常感谢! – knrkn
fscanf()需要一个可以从fopen()获得的FILE *。 –
使用fopen作为@CharlieBurns说。完成后请不要忘记在FILE *上调用fclose。 – hulkmeister