0
文字列を整数に連結して文字列に変換し、結果をファイルに書き込もうとします。intを文字列に変換して結果を連結します
は(簡体字)私のコードがあります:
char * convert_int_string(int val)
{
char * str = malloc(sizeof(char)*64);
sprintf(str,"%d",val);
return str;
}
char * parse_val(int val){
char * str = malloc(sizeof(char)*64);
char * str2 = convert_int_string(val);
strcat(str, "test");
strcat(str,str2);
free(str2);
return str;
}
fprintf(my_file, "%s\n", parse_val(42));
しかし、私はこの結果を取得し、私は(ここでvalが42に等しい)理由を理解していない:
��7s�test42
(私が使用しましたこのポストHow do I concatenate const/literal strings in C?とこれ1 How to convert integer to string in C?)
'strcat(str、" test ");' - > 'strcpy(str、" test ");' : 'malloc'によって返されたメモリチャンクは初期化されていません。 – BLUEPIXY
'parse_val()'の 'str'にはメモリが割り当てられていますが、そのメモリを初期化せずに' concat'することはできません。 –
ニース、ありがとう@BLUEPIXY。 'strcat(str、" test ");の中では – Eraseth