目录
问题描述:
解决方案:
举个例子:
问题描述:
scanf("%c")从键盘读取数据时,将读取空白字符,并在读取空白字符后停止读取空白字符之后的内容,而为被读取的内容将会影响下一次scanf("%c")从键盘读取数据
解决方案:
针对这种情况可以在scanf("%c")中的%c前面加上空格字符,这样就可以消除空白字符之后的未读取内容对scanf()的影响
举个例子:
下述程序欲实现的功能是:输入两个字符,判断两个字符是否都是大写字母,如果都是则输出YES,否则输出NO - #include <stdio.h>
- int main()
- {
- char ch1 = 0;
- char ch2 = 0;
- while (~scanf("%c%c", &ch1, &ch2))
- {
- if ((ch1 >= 'A' && ch1 <= 'Z') && (ch2 >= 'A' && ch2 <= 'Z'))
- printf("Y\n");
- else
- printf("N\n");
- }
- return 0;
- }
复制代码
程序运行,多次输入AB进行测试,发现程序未能达到预期目的,存在bug
按照上述解决方案调整后(仅仅在%c%c前添加了空格' ') - #include <stdio.h>
- int main()
- {
- char ch1 = 0;
- char ch2 = 0;
- while (~scanf(" %c%c", &ch1, &ch2))
- {
- if ((ch1 >= 'A' && ch1 <= 'Z') && (ch2 >= 'A' && ch2 <= 'Z'))
- printf("Y\n");
- else
- printf("N\n");
- }
- return 0;
- }
复制代码
再次测试,问题得以解决
|