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
相关产品推荐
相关产品推荐

