在下面给出的代码中,我尝试在 while 循环中使用 scanf 进行字符串输入。当我打印该字符串时,它打印时没有第一个字符。但是当我将其复制到另一个字符串并打印该新字符串时,它会正确打印。
在我的代码中,如果我将" abc" 作为输入并打印两个字符串,那么" bc abc" 是打印而不是" abc abc" 。
这是什么原因?我的代码有问题吗?
word
答案 0 :(得分:0)
char st1[10],st2[]="";
为st1
保留10个字节,为st2
保留1个字节。
然后您尝试将st1的内容复制到st2。
删除它,因为它不是必需的:
strcpy(st2,"");
改变这个:
char st1[10],st2[10];
现在你有两个变量的内存,你可以在两者之间复制数据。在第一个示例中,您没有为st2
变量保留足够的内存,并且行为通常未定义。