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

请求调试C语言字符串回显程序:输入quit无法正常终止问题

调试你的C语言字符串输入程序

嘿,我来帮你排查这段代码的问题!你的功能思路完全没问题,但在C语言处理字符串的细节上踩了两个小坑,修正后就能正常运行啦:

问题1:错误的字符串比较方式

你用 input != "quit" 判断输入是否为"quit",但在C语言里,字符串字面量(比如"quit")本质是一个指向字符数组的指针,input作为数组名也代表数组首元素的地址。这行代码比较的是两个指针的内存地址,而不是字符串的实际内容——显然这两个地址永远不会相等,所以循环永远不会停止。

要正确比较字符串内容,必须使用标准库的 strcmp 函数(需要包含 <string.h> 头文件):

  • 当 strcmp(a, b) == 0 时,说明两个字符串完全相等
  • 当返回值不为0时,说明字符串不相等

问题2:多余的取地址符&

scanf("%s", &input) 里的 &input 是错误的:数组名 input 本身就已经是指向数组首元素的指针,不需要再加取地址符。虽然某些情况下这样写不会直接崩溃,但不符合C语言的语法规范,容易引发潜在问题,应该改成 scanf("%s", input)。

修正后的完整代码

#include <stdio.h>
#include <string.h>  // 引入strcmp所需的头文件

int main() {
    char input[11];
    printf("Give your input: \n");
    scanf("%s", input);
    while (strcmp(input, "quit") != 0) {
        printf("%s\n", input);
        scanf("%s", input);
    }
    return 0;
}

额外小提示

如果你的需求是支持输入包含空格的字符串(比如"hello world"),scanf("%s") 就不够用了——它会在遇到空格时停止读取。这种情况下可以改用 fgets 函数,不过需要额外处理换行符的问题,如果你有这方面的需求可以再问哦~

内容的提问来源于stack exchange,提问作者Mohammad Fazlur Rahman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:17:46