我尝试将字符串与转换为字符串的整数连接起来,并将结果写入文件。
这是我的代码(简化版):
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? )
最佳答案
你得到垃圾输出的原因是因为你给 strcat
的是垃圾。事实上,您为 str
分配了 64 个字节,但您没有初始化它,所以您不知道它包含哪些字节。您可以使用 calloc
而不是 malloc 或使用 memset
将 0 放入 str
。
编辑:事实上,您只需要将\0 作为 str
的第一个字节。实际上,strcat
首先在目标字符串中查找\0 字符,然后从那里添加第二个字符串
关于将 int 转换为字符串并连接结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41656273/