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

求助:如何用C语言实现接收用户输入语句的控制台程序?

C语言控制台程序问题解决与代码修正

核心疑问解答

完全不需要创建HTML文件,你开发的是纯C语言控制台程序,所有交互都在终端(命令行)内完成,用户输入后按回车提交是控制台的默认行为,和网页技术没有关联。

现有代码的问题

  • 姓名变量定义错误:char name;仅能存储单个字符,无法保存完整姓名,需改为字符串数组(如char name[50];)。
  • 姓名读取逻辑错误:scanf("%c", &name);只能读取单个字符,读取字符串应使用scanf("%s", name);(数组名本身代表地址,无需加&);若要支持带空格的姓名,建议用fgets。
  • 短句读取限制:scanf("%s", word);只能读取到第一个空格,无法获取带空格的完整短句,推荐用fgets读取整行输入。
  • 输出内容缺失:原代码仅输出短句,未包含用户姓名,需调整输出语句。

修正后的代码(基础版,不支持带空格的输入)

#include <stdio.h>
  
int main()
{
    char word[100];
    char name[50]; // 改为字符串数组存储姓名

    printf("What is your name? ");
    scanf("%s", name); // 读取姓名字符串
    
    printf("Enter your sentence: ");
    scanf("%s", word); // 读取短句(不含空格)
    
    printf("Output: Name: %s, Sentence: %s\n", name, word); // 同时输出姓名和短句
    return 0;
}

进阶版代码(支持带空格的整行输入)

#include <stdio.h>
#include <string.h> // 用于strcspn函数处理换行符
  
int main()
{
    char word[100];
    char name[50];

    printf("What is your name? ");
    fgets(name, sizeof(name), stdin);
    // 去掉fgets读取到的换行符
    name[strcspn(name, "\n")] = '\0';
    
    printf("Enter your sentence: ");
    fgets(word, sizeof(word), stdin);
    word[strcspn(word, "\n")] = '\0';
    
    printf("Output: Name: %s, Sentence: %s\n", name, word);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:45:40