1

を に変換しようとしintていchar*ます。私は Mac OS X を使用しているためitoa、 を使用できません。非標準であるため、sprintforを使用しようとしていますsnprintfが、取得し続けていsegmentation fault: 11ます。これが私が持っているものです:

snprintf(msg, sizeof(char *), "%d", 1);

それで、私は提案を望んでいます、私は何ができますか?

4

2 に答える 2

1

msgである は、char *使用できるメモリを指していない可能性があります。そのため、最初に文字列を格納するために使用されるメモリを動的に割り当てる必要があります。

msg = malloc(12); // 12 is an arbitrary value
snprintf(msg, 12, "%d", 1); // second parametre is max size of string made by function

または、静的バッファーを宣言することもできます。そうすれば、メモリを解放する必要はありません。

char msg[12]; // again, 12 is an arbitrary value
snprintf(msg, sizeof(msg), "%d", 1);
于 2014-07-05T03:51:28.260 に答える
0

msg をどのように宣言しますか?

このようなものが動作するはずです:

char msg[15];
snprintf(msg, sizeof(msg), "%d", 1);

の 2 番目の引数snprintfは、文字のサイズではなく、文字列の長さであることに注意してください。

于 2014-07-05T03:46:18.763 に答える