int* を char* に変換できないことは理解していますが、sprintf を使用して int* を char* 配列にコピーする必要があります。私の問題は、sprintf を正しく使用していると思いますが、次の警告が表示されることです。これは、私がやろうとしていることの要約および簡略化されたバージョンです。
int* iarray = calloc(top + 1, sizeof(int));
char* carray = (char*)calloc(count,sizeof(char));
/*
some code that adds stuff to the int*, it works fine....something like
for(i=0; i<=count; i++)
iarray[i] = i;
lets assume that iarray is something like 1234
*/
for(i=0; i<=count; i++)
{
sprintf(carray, "%d", iarray[i]);
printf("%s", carray) //this is just to test, it only prints out the first number...
}
これは私を夢中にさせています...私のコードをもっと知りたい場合は、私に知らせてください。
ありがとう!
編集:ここにさらにコードがあります。基本的な変数宣言をスキップしました。それらを追加できますが、それらはすべて問題ないことを保証します
変換を行う関数は次のとおりです。
void ints_to_chars(char* carray, int count, int* iarray)
{
//convert ints to char*
int i;
//char *char_array=(char*)calloc(count,sizeof(char));
printf("ints to chars: char array-->");
for(i=0; i<=count; i++)
{
sprintf(carray, "%d", iarray[i]);
printf("%s",carray);
}
return;
}
int main(int argc, char** argv)
{
int i, j, count;
if(i-1 == 0)
bottom = 2;
else
bottom = (int)atoi(argv[i-1])+1;
top = (int)atoi(argv[i]);
printf("child %d: bottom=%d, top=%d\n", getpid(), bottom, top);
prime_iarray = calloc(top + 1, sizeof(int));
primenumbers(prime_iarray,bottom,top);
count = prime_iarray[0];
/*printf("prime int array: \n");
for(i=1; i<=count; i++)
{
printf("%d", prime_iarray[i]);
}*/
//int* into char*
prime_carray = (char*)calloc(count,sizeof(char));
ints_to_chars(prime_carray, count, prime_iarray);
printf("prime char array:\n");
printf("%s",&prime_carray[0]);
}
編集2:だから、誰かが私が得ていた警告を取り除いたばかげたエラーを親切に指摘しました。しかし、私の char* は最初の文字のみを出力します....最初はローカルの char* を返していましたが、常に最初の文字のみを返すことがわかりました。私は何を間違っていますか?なぜこれが起こっているのか誰かが私に説明できますか? 申し訳ありませんが、私はポインタに不慣れで、これに本当に苦労しています...