scanf使用%d和%c核心区别
2026/7/19 13:36:36 网站建设 项目流程

一、核心区别总览 空白符 = 空格、回车、Tab

  1. %d(读取整数):自动跳过所有前导空白符,只识别数字,空白不会被读取、不会占用输入位置。
  2. %c(读取单个字符):不跳过任何空白符,空格、回车、Tab 都被当成合法普通字符,会直接被读取占用。

二、案例 1:连续输入,中间加空格

1)使用%d%d

#include <stdio.h> int main() { int a, b; scanf("%d%d", &a, &b); printf("a=%d, b=%d", a, b); return 0; }

输入示例:10 20

运行结果:a=10, b=20

解读:两个%d之间的空格被自动忽略,两个整数被正常读取。

2)使用%c%c

#include <stdio.h> int main() { char a, b; scanf("%c%c", &a, &b); printf("a=%c, b=%c", a, b); return 0; }

输入:1 2(1 + 空格 + 2)

运行结果:a=1, b=

解读:

• 第一个 %c 读到字符 1

• 第二个 %c 读到中间的空格,空格占用了位置,2 没被读到。

三、案例 2:输入后敲回车(换行符 \n)

1)%d不受回车影响

int a, b; scanf("%d", &a); scanf("%d", &b);

操作:输入 10 → 回车 → 输入 20

结果:a=10,b=20

解读:回车是空白符,%d 直接跳过,无影响。

2)%c会读取回车(高频易错点)

char a, b; scanf("%c", &a); scanf("%c", &b);

操作:输入 A → 回车

结果: • a = 'A' • b = 回车符(看不到,但确实被读取)

解读:按下的回车 \n 被第二个 % c 直接捕获,无法再输入新字符。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询