【发布时间】:2014-04-18 11:24:00
【问题描述】:
我尝试将数组中的所有元素打印为字符串。
以下代码出现分段错误。
因为 char 的某些指针没有指向正确的地址。
char *print_array(char **s) {
int i;
char *ret;
char *elm;
char *myStr;
strcat(myStr,"[");
for (i = 0; s && s[i]; ++i){
sprintf(elm,"\"%s\" ",s[i]);
strcat(myStr,elm);
}
strcat(myStr,"]");
ret = myStr;
return ret;
}
int main(){
char *myArray[10] = {"4", "2", "11", "4", "15", "7", "9", "12", "3", "6"};;
printf("## %s",print_array(myArray));
}
那么,如何打印数组中所有元素的字符串呢?
我的意思是上面的例子使用了 10 个数组元素,但我想打印任何不知道每个元素有多少元素和长度的数组。
有谁知道好方法吗?
【问题讨论】:
-
您不会为数字所在的字符串分配任何内存。所以你不知道它指向哪里,你在内存中的某个地方写字符。您必须先
malloc一些空间。 -
当我不知道数组的大小时,我必须 malloc 多少大小?
-
看看约阿希姆的回答。您必须以一种或另一种方式传递大小。您可以自行分配足够的内存。
标签: c arrays string pointers char