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

