我尝试将字符串与转换为字符串的整数连接起来,并将结果写入文件。
我的代码(简化):
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?和这一篇How to convert integer to string in C?)
答案 0 :(得分:2)
您获得附加输出的原因是您向strcat
提供的内容是垃圾。实际上,你为str
malloc'ed 64字节,但你没有初始化它,所以你不知道它包含哪些字节。您可以使用calloc
代替malloc,也可以使用memset
将{0}放入str
。
编辑:事实上,你只需要将\ 0作为str
的第一个字节。实际上,strcat
首先在目标字符串中查找\ 0字符,从那里添加第二个字符串