printf跳过字符数组的第一个字符

时间:2017-05-10 13:29:08

标签: c++ c arrays string character

在下面给出的代码中,我尝试在 while 循环中使用 scanf 进行字符串输入。当我打印该字符串时,它打印时没有第一个字符。但是当我将其复制到另一个字符串并打印该新字符串时,它会正确打印。

在我的代码中,如果我将" abc" 作为输入并打印两个字符串,那么" bc abc" 是打印而不是" abc abc"

这是什么原因?我的代码有问题吗?

word

1 个答案:

答案 0 :(得分:0)

char st1[10],st2[]="";st1保留10个字节,为st2保留1个字节。

然后您尝试将st1的内容复制到st2。

删除它,因为它不是必需的:

strcpy(st2,"");

改变这个:

char st1[10],st2[10];

现在你有两个变量的内存,你可以在两者之间复制数据。在第一个示例中,您没有为st2变量保留足够的内存,并且行为通常未定义。