此问题在此处已有答案:
scanf() leaves the newline character in the buffer(7个答案)
7小时前关闭。
为什么当我尝试输入字符时,命令中心会产生巨大的空白?程序的目的是输入正方形的边长并用输入的字符填充它。谢谢!
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void sides(void);
int main(void) {
sides();
return 0;
}
void sides(void) {
int input;
char inputChar;
printf("Enter sides of parking lot: ");
scanf_s("%d", &input);
printf("Enter desired character: ");
scanf_s("%c", &inputChar, 1);
int x, y;
while (input != -1) {
for (y = 0; y < input; y++) {
for (x = 0; x < input; x++) {
printf("%c",inputChar);
}
printf("\n");
}
printf("Enter sides of parking lot: ");
scanf_s("%d", &input);
printf("Enter desired character: \n");
scanf_s("%c", &inputChar, 1);
}
}
我期望
Enter sides of parking lot: 5
Enter desired character: *
*****
*****
*****
*****
*****
我得到的是一个无意的间隙
Enter sides of parking lot: 5
Enter desired character:
Enter sides of parking lot: *
Enter desired character:
*****
*****
*****
*****
*****
Enter sides of parking lot:
1条答案
按热度按时间ia2d9nvy1#
你的
scanf("%c", &inputChar)
(好吧,你的scanf_s
,但我猜是做同样的事情。但scanf_s
是非标准的,我没有办法测试它),正在阅读前一个输入的尾随\n
。当你输入
scanf("%d", &input)
时,它只读取整数的组成部分,比如数字,但是你在键盘上输入的是一些数字,然后是一个RETURN('\n'
),\n
仍然在缓冲区中等待读取。一个简单的解决方法是,假设您不希望
inputChar
成为空格,则将scanf("%c", &inputChar)
由
scanf(" %c", &inputChar)
然后
scanf
将假定您不仅对下一个字符感兴趣,而且对一些分隔符(空格和\n
)之后的下一个字符感兴趣如果你需要在
inputChar
中有一个空格的能力,也就是说,如果你想让用户能够用一个空格来回答问题“input desired characters”,那么你就必须循环阅读inputChar
,直到你得到一个\n