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

C语言中如何打印含扫描字符与整数的语句?代码报错求助

C语言代码编译错误修复

先看你代码里的几个关键问题:

  • scanf传参错误:scanf要求传入变量的内存地址,你直接写a和b不对,得加&取地址符(字符数组例外,数组名本身就是地址)
  • 姓名存储类型错误:单个char只能存一个字符,姓名是字符串,得用字符数组,比如char a[50],对应的输入格式符用%s
  • printf格式错误:不能直接把变量嵌在字符串里,得用格式占位符,%s对应字符串,%d对应整数,参数要放在格式字符串后面的括号里
  • 换行符写法错误:代码里的换行应该用转义字符\n,不是直接换行

修正后的代码:

#include <stdio.h>
int main()
{
    char a[50]; // 用字符数组存姓名,足够容纳大部分名字
    int b;
    printf("Name of Prisoner: ");
    scanf("%s", a); // 字符数组不用加&,数组名就是地址

    printf("How many years in jail as stated by the court? ");
    scanf("%d", &b); // 整数变量要加&取地址

    printf("Prisoner %s goes to jail for %d years\n", a, b); // 用占位符拼接内容

    return 0;    
}

对应你遇到的编译错误:原代码里的printf("Prisoner "a" goes to jail for "b" years\n"a,b);写法完全不符合C语言语法,C语言里字符串不能直接用变量拼接,必须用%s、%d这类占位符,把变量作为printf的后续参数传入,这就是编译器报expected ')' before 'a'的原因——它看不懂你把a直接放在字符串后面的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:48:15