C 空字符串将复制什么到另一个字符串?

C 空字符串将复制什么到另一个字符串?,c,strcpy,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”。根据printf语句,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”。

根据printf语句,strcpy的参数混淆了

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

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

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

char s1[10] = "";

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


复制空字符串时,将复制单个零终止符字符。目标字符串仍然有一个地址。字符串的指针chars将指向零终止符,字符串的指针将不为空。

作为my代码输出的“S”字母是随机的还是有特殊含义?谢谢您的回答。@Vincent.N因为s1没有初始化,所以您可以读取任意随机值。准确,但不能直接解释OP报告的程序输出。空字符串是字符数组的一部分,或者是指向第一个元素值为0的数组元素的指针。