我收到警告从不兼容的指针类型返回到我返回sarray的行,为什么呢?我一直试图想出一段时间..我也在行
中收到不兼容指针类型的警告( *iarray )[CHARACTER_LIMIT] = scanCode();
但我认为如果我修复了第一部分,这将更容易解决这个问题。
#include <stdio.h>
#define MAX_WORDS 9054 //Scope variables
#define CHARACTER_LIMIT 6
#define MAX_TRIPLETS 3018
char** scanCode(void)
{
FILE *in_file;
int i = 0;
static char sarray[MAX_WORDS][CHARACTER_LIMIT];
in_file = fopen("message.txt", "r");
for(i=0; i<WORD_COUNT_MAX; i++) {
fscanf(in_file,"%s", sarray[i]);
}
return sarray;
fclose(in_file);
}
int main(void)
{
char ( *iarray )[CHARACTER_LIMIT] = scanCode();
while(1);
return 0;
}
答案 0 :(得分:2)
sarray
是一个或多个数组,它可以衰减到指向数组的指针,但不能指向指针。将sarray
转换为char**
应该是错误的。
除此之外,scanCode()
返回指向char
的指针。 iarray
是指向长度为char
的{{1}}数组的指针。这些类型不同,编译器会向您发出警告。
您需要更改函数的返回类型:
CHARACTER_LIMIT
此处,char (*scanCode(void))[CHARACTER_LIMIT] {
....
return sarray;
}
衰减到指向长度为sarray
的数组的指针。