空字符串会复制到另一个字符串中吗?

时间:2019-02-03 15:41:56

标签: c strcpy

我刚刚开始学习C编程。进入字符串时,我对函数“ strcpy”感到困惑。我尝试切换第一个参数和第二个参数的位置。当我运行该程序时,它仅显示一个“ S”。是什么意思?

char s2[ ]= "Hello";
char s1[10];
strcpy(s2, s1);
printf("Source string = %s\n", s2);
printf("Target string = %s\n", s1);

我认为输出将为空。但这只是显示“ S”。

2 个答案:

答案 0 :(得分:2)

基于printf语句,您混合了strcpy的参数。

现在,您正在将s1复制到s2。数组s1尚未初始化,因此它包含的值不确定

要将s2复制到s1,请切换参数:

strcpy(s1, s2);

如果保持原样,则需要将s1显式设置为空字符串以获得一致的结果。

char s1[10] = "";

答案 1 :(得分:0)

在C中,字符串以零结尾。这意味着空字符串是包含单个“零终止符”字符的字符串。

复制空字符串时,将复制单个“零终止符”字符。目标字符串仍然有一个地址(“字符串chars的指针”将指向零终止符),并且该字符串的指针将不为NULL。