C语言中条件运算符结合printf判断空白字符的输出异常问题排查
问题分析与解决
你的条件运算符本身没有问题,问题出在printf("%")这一行。
在C语言的printf函数中,%是格式占位符的起始标记,单独使用一个%属于非法的格式字符串,会触发未定义行为——这就是为什么输入非空白字符时,程序没有输出预期的%,反而打印了输入字符(或其他异常内容)。
修复方案
把输出%的语句改成printf("%%"),两个连续的%会被printf解析为输出一个单独的%符号。修复后的代码如下:
#include <stdio.h> #include <ctype.h> int main() { char character; printf("Press any single key\n"); character = getchar(); isspace(character) ? printf("*") : printf("%%"); return 0; }
额外补充:isspace函数本身返回的就是非零(真)或零(假),所以可以直接用isspace(character)作为条件判断,不用额外和0比较,代码会更简洁。
内容的提问来源于stack exchange,提问作者taemm
相关产品推荐
相关产品推荐

