C语言新手求助:编写的程序编译时反复出现相同错误
你的C语言程序错误分析与修正
错误原因
你代码里的第一个scanf调用存在参数类型不匹配的问题:
scanf("%s", &name);
name是字符数组名,它本身就代表数组首元素的内存地址,类型为char*,完全符合%s格式符的要求。而你加了取地址符&后,传递的是指向整个数组的指针(类型为char (*)[25]),和%s所需的char*类型不兼容,这就是编译反复报错的根源。
修正后的代码
#include <stdio.h> int main(){ char name[25]; int age; printf("\nwhat is your name: "); scanf("%s", name); // 去掉&符号 printf("what is your age: "); scanf("%d", &age); printf("\nyour name is %s", name); printf("\nand your age is %d", age); return 0; }
额外提示
如果需要读取包含空格的姓名(比如"John Doe"),%s就无法满足需求了,因为它会在遇到空格时停止读取。这种情况下可以使用fgets函数替代:
fgets(name, sizeof(name), stdin); // 注意fgets会把换行符也读进去,需要手动去除 name[strcspn(name, "\n")] = '\0';
内容的提问来源于stack exchange,提问作者Colt
相关产品推荐
相关产品推荐

