strcat() 在开头添加额外的字符

strcat() add extra characters at the beginning

我想使用 strcat() 在 C 中连接 2 个字符串,但它总是在新连接字符串的开头添加一些随机字符。 谁能告诉我为什么会这样以及如何解决?

这是我的代码:

#include "stdio.h"
#include "string.h"

int main(void)
{
  
  char text[100];
  
  strcat(text, "Line 1");
  strcat(text, "Line 2");

  printf("%s", text);
  
  return 0;
}

当我执行这个时,我得到以下输出:

???    Line1Line2

如有任何帮助,我将不胜感激。

谢谢。

strcat(text, "Line 1");

具有未定义的行为,因为 strcat 函数调用的两个参数都必须指向字符串,即 null-terminated 字符序列。但是,第一个参数不能保证指向一个字符串,因为 text 包含不确定的值,因为它没有被初始化。

您有两种选择来修复此错误。您可以

  • 在第一次调用 strcat 之前,将 text 的第一个字符设置为终止空字符,即 text[0] = '[=15=]';,以便 text 包含一个有效的 (空)字符串,或
  • 将对 strcat 的第一个函数调用替换为 strcpy,因为 strcpy 不要求第一个函数参数指向有效字符串。