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
不要求第一个函数参数指向有效字符串。
我想使用 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
不要求第一个函数参数指向有效字符串。