填充char *数组从0到x

时间:2016-05-06 09:54:58

标签: c arrays char

我在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]

2 个答案:

答案 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