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

C语言scanf函数被跳过直接执行嵌套代码输出False问题排查

问题产生原因
  • 类型定义错误:你需要比对的是单词(字符串),但你将存储变量w1、w2定义为了int整型,根本无法存储字符串内容。
  • scanf格式符使用错误:%%是用于匹配/输出百分号%本身的转义写法,不是读取输入的有效格式符。运行时scanf会尝试匹配输入流中的%字符,匹配失败就直接返回,不会等待用户输入有效内容,两个int变量属于未初始化的随机值,大概率不相等,所以程序直接输出False。
  • 字符串比对逻辑错误:就算修改为字符串存储,也不能直接用==判断相等,==只会比对两个字符串的内存首地址,不会比对内容。
修复方案

按以下步骤修改代码:

  1. 将w1、w2修改为字符数组,用于存储输入的单词,数组长度可根据实际单词最大长度调整,示例设置为100。
  2. 将scanf的格式符修改为%s,数组名本身就是首地址,不需要加取地址符&。
  3. 调用string.h头文件中的strcmp函数比对字符串,当返回值为0时代表两个字符串完全相等。

修复后的完整代码如下:

#include <string.h>
#include <stdio.h>

int main()
{
    // 定义字符数组存储单词
    char w1[100], w2[100];

    printf("What is the first word?");
    scanf("%s", w1);

    printf("What is the second word?");
    scanf("%s", w2);

    if (strcmp(w1, w2) == 0) {
        printf("True");
    } else {
        printf("False");
    }

    return 0;
}

内容的提问来源于stack exchange,提问作者JAKE Cho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:57:05