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

C语言中使用printf打印两字符串时出现参数类型不匹配错误

问题解决:C语言printf/scanf字符串类型不匹配错误

错误原因

你定义的name和phone是单个char类型变量,但%s格式符要求的是char*类型(指向字符串首地址的指针)。当单个char变量传入printf/scanf时,会被隐式提升为int,直接导致类型不匹配报错。

修正后的代码

#include <stdio.h>

int main(void)
{
    // 定义足够长度的字符数组存储字符串,预留'\0'结束符的位置
    char name[50], phone[20];
    int age;

    printf("Kindly input your name, age and phone number: ");
    // 数组名本身就是指针,无需加&;%49s限制输入长度,避免缓冲区溢出
    scanf("%49s %d %19s", name, &age, phone);
    printf("%s %s %d\n", name, phone, age);
    return 0;
}

关键说明

  • 变量类型修正:字符串必须用字符数组(如char name[50])存储,而非单个char。数组长度要足够容纳输入内容加上字符串结束符\0。
  • scanf参数修正:数组名本身就是指向首元素的指针,所以不需要加&;添加长度限制(如%49s)可以防止输入过长导致缓冲区溢出。
  • 输入顺序提示:如果需要支持带空格的姓名,不能用%s格式符,得改用fgets处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 01:47:23