C语言多次输入过程中getchar()“被跳过”问题
#include <stdio.h>void main()
{char x[4];int count = sizeof(x);printf("*****************************\n");for (size_t i = 0; i < count; i++){printf("输入第%d个字符\n", i + 1);x[i] = getchar();// getchar();吸收缓冲区内的换行符}printf("*****************************\n");for (size_t n = 0; n < count; n++){printf("x[%d]=%d\n", n, x[n]);printf("字符:%c\n", x[n]);}
}
结果可以看到第二次与第四次的输入“被跳过”,实际是输入了回车符
只需要增加一个
getchar()函数把缓冲区内的回车符“吸收掉”就可以了
#include <stdio.h>void main()
{char x[4];int count = sizeof(x);printf("*****************************\n");for (size_t i = 0; i < count; i++){printf("输入第%d个字符\n", i + 1);x[i] = getchar();getchar();//吸收缓冲区内的换行符}printf("*****************************\n");for (size_t n = 0; n < count; n++){printf("x[%d]=%d\n", n, x[n]);printf("字符:%c\n", x[n]);}
}
连续输入时,因不需要每次输入后按回车键则不需要
#include <stdio.h>void main()
{char x[4];int count = sizeof(x);x[0] = getchar();x[1] = getchar();x[2] = getchar();x[3] = getchar();for (size_t n = 0; n < count; n++){printf("x[%d]=%d\n", n, x[n]);printf("字符:%c\n", x[n]);}
}