You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 23:05:32