我在c(gcc linux)中有一个char *数组的问题
关于debian它有效,但在另一个系统(yocto,raspbian)上出现了分段错误
Debian中的工作代码:
char *myarray;
for (i=0;i<999;i++){
printf(myarray, "%i", i);
//do something with string to compare in file
}
但是这个Code故障在另一个系统上,我试图制作一个数组:
char *myarray[999]={"0","1","2"};
for (i=0;i<999;i++){
//do something with string[i] to compare in file
}
此代码也有效,但我不想将数组从手工填充到“999”
我还没有找到一种方法在循环中从“0” - “999”制作char *string[arr]
答案 0 :(得分:1)
好吧,你可以使用sprintf
-
char *array[1000];
for(int i=0;i<1000;i++){
array[i]=malloc(10*sizeof(**array)); //allocate memory to pointer
if(array[i]!=NULL){ //check return of malloc
sprintf(array[i],"%d",i);
}
}
注意 - 只需记住free
已分配的内存。
答案 1 :(得分:1)
目前还不清楚你在追求什么。
如果你想构建一个包含字符串的数组&#34; 0&#34;通过&#34; 999&#34;,您可以使用paramIdWorker
:
snprintf()
然后你可以打印例如char array[1000][4]; /* Wastes some space, but not a great deal. */
for(int i = 0; i < 1000; ++i)
snprintf(array[i], sizeof array[i], "%d", i);
喜欢这样:
452