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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:36:07