字符数组输入时的回车问题

如题所述

第1个回答  2022-07-25
关于字符数组的输入,主要有两种形式,分别为scanf语句输入和gets语句输入,这两种输入各有优缺点,都是围绕空格和回车的问题。

对于scanf函数来说,它不会将‘\n’当做一个字符来读取,所以在有两个scanf语句先后执行的时候,后面的scanf语句不会将上一个scanf的回车作为字符进行读取,从而导致无法输入或者空白的情况。它的缺点就是不能读取空格,当输入空格时,scanf语句只能读取第一个空格前的非空格的部分,如果第一个就是空格的话,scanf语句不执行。

所以当我们要输入空格的时候,可以使用gets语句,我认为在优缺点方面这两个语句是互补的,gets语句可以读取空格,也可以读取回车,这样也导致了上述的回车问题,同时使用scanf语句和gets语句的时候,scanf语句后的回车符会被gets语句读取,这样gets语句就会因为无法输入而导致程序出错,或者无法继续运行。

要解决gets语句读取回车的问题,可以在gets语句前输入getchar()来读取回车,从而使gets语句能正确执行。
相似回答
大家正在搜