将int转换为string并连接结果

时间:2017-01-14 23:49:23

标签: c string int string-conversion

我尝试将字符串与转换为字符串的整数连接起来,并将结果写入文件。

我的代码(简化):

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?

1 个答案:

答案 0 :(得分:2)

您获得附加输出的原因是您向strcat提供的内容是垃圾。实际上,你为str malloc'ed 64字节,但你没有初始化它,所以你不知道它包含哪些字节。您可以使用calloc代替malloc,也可以使用memset将{0}放入str

编辑:事实上,你只需要将\ 0作为str的第一个字节。实际上,strcat首先在目标字符串中查找\ 0字符,从那里添加第二个字符串