我试图从我创建的一个函数中转移一个数组,输入一个由char组成的数组和一个简短的,复制如下
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;
}我通过以下方式将设置大小的数组返回到main中。
char newDay [32];
newDay = transl (engw, daynum);我得到以下错误:
assignment to expression with array type我在Stack上读到,我必须回传一个指向数组的指针,但如果不回传数组本身,该指针在main中不是无效的吗?
不管怎么说,我非常困惑。请提前给我建议,谢谢!
发布于 2016-10-23 07:23:49
为了从函数中传回数组,您需要做以下两件事之一:
下面是第二种方法的示例:
char *newword = malloc(30);
memset(newword, 0, 30);
...
return newword;函数的调用者将需要调用
free(resultOfCall);在他处理完返回的数组之后。
https://stackoverflow.com/questions/40197981
复制相似问题