我试图从我创建的函数中传输一个数组,输入一个char和一个short的数组,复制在下面
char transl [] (char **x, short num){
char newword [] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
short num = num;
FILE * wd;
wd = fopen(argv[1], "r");
short w=0;
short arrayle=sizeof(x);
if (arrayle>9){
while((c = getchar() != '\n') && c != EOF);
}
while(((c = fgetc(wd)) != EOF)&& (num>=1)) {
if (c == ' ') {
num--;
}
if (num == 1) {
newword [w] = ((c = fgetc(wd)));
w++;
}
}
fclose(wd);
return newword;
}
我按以下方式将set size数组返回main。
char newDay [32];
newDay = transl (engw, daynum);
我收到以下错误:
assignment to expression with array type
我在Stack上读到我必须传回一个指向数组的指针,但是如果没有数组本身被传回,那么指针在主中是无效的吗?
无论如何,非常困惑。请提前告知,并提前多多谢谢你!
答案 0 :(得分:1)
为了从函数传回一个数组,你需要做两件事之一:
以下是第二种方法的示例:
char *newword = malloc(30);
memset(newword, 0, 30);
...
return newword;
您的函数的调用者需要调用
free(resultOfCall);
完成处理返回的数组后。