登录/注册

scanf用法

更多

scanf 函数用法详解(C语言)

scanf 是 C 语言中用于从标准输入(如键盘)读取格式化数据的函数,定义在头文件 <stdio.h> 中。

基本语法:

int scanf(const char *format, 变量地址列表);

常用格式说明符:

说明符 作用 示例
%d 读取整数(int scanf("%d", &num)
%f 读取单精度浮点数(float scanf("%f", &f_val)
%lf 读取双精度浮点数(double scanf("%lf", &d_val)
%c 读取单个字符(char scanf("%c", &ch)
%s 读取字符串(char[] scanf("%s", str)
%u 读取无符号整数(unsigned int scanf("%u", &u_val)
%x 读取十六进制整数 scanf("%x", &hex)
%o 读取八进制整数 scanf("%o", &oct)

核心注意事项:

  1. 变量地址必须传递

    int num;
    scanf("%d", &num);  // 正确:使用 & 取地址
    scanf("%d", num);   // 错误:缺少 &,可能导致崩溃!
  2. 字符串输入不需要 &

    char str[100];
    scanf("%s", str);   // 正确:str 是数组首地址
  3. 处理空白字符

    • %d, %f 等会自动跳过空格、制表符、换行符。
    • %c 会读取所有字符(包括空格/换行)。如需跳过空白:
      scanf(" %c", &ch);  // 格式串前加空格,忽略空白
  4. 输入多个值

    int a, b;
    scanf("%d%d", &a, &b);    // 输入用空格/换行分隔,如 "10 20"
    scanf("%d, %d", &a, &b);  // 输入需带逗号,如 "10, 20"
  5. 限制字符串长度(防溢出)

    char name[20];
    scanf("%19s", name);  // 最多读 19 字符,保留位置给结尾 '\0'
  6. 检查返回值

    if (scanf("%d", &num) != 1) {
       printf("输入无效!");
       // 处理错误
    }

常见问题与技巧:

  1. 输入缓冲区残留字符
    混合输入数值和字符时,换行符可能残留在缓冲区,导致 %c 读到 \n
    解决:在 %c 前加空格或清空缓冲区:

    scanf(" %c", &ch);  // 推荐:跳过空白符
    // 或
    while (getchar() != '\n'); // 清空缓冲区
  2. 读取带空格的字符串
    %s 遇到空格会终止。如需整行输入,改用 fgets

    fgets(str, sizeof(str), stdin);  // 包含换行符
  3. 匹配特定格式
    若格式串包含非格式字符(如 :,),输入必须严格匹配:

    scanf("Name:%s", str);  // 输入需为 "Name:Alice"

示例代码:

#include <stdio.h>
int main() {
    int age;
    float height;
    char initial;

    printf("输入年龄、身高和首字母(用空格分隔): ");
    if (scanf("%d %f %c", &age, &height, &initial) == 3) {
        printf("年龄: %d\n身高: %.2f\n首字母: %c\n", age, height, initial);
    } else {
        printf("输入格式错误!");
    }
    return 0;
}

输入示例25 1.75 A
输出
年龄: 25
身高: 1.75
首字母: A


总结:

如何使用scanf从键盘获取值?

早上好 我正在尝试使用 Hello World 演示来查看终端如何使用 mcxc242 工作。 我正在使用 teraterm。我可以正确地看到 PRINTF,但是从 GETCHAR() 或 SCANF() 从键盘发送值似乎不起作用。 我需要启用什么吗? 谢谢你的回复。

2026-05-28 06:55:19

scanf函数介绍

用scanf函数向字符型数组输入数据char a[20]; scanf(\"%s\", a); 错误 scanf(%s

2025-12-02 06:07:01

为何scanf函数的参数需要取地址?

scanf的作用是从标准输入缓冲区获得一个数据,放在对应的变量里面,假设我们获取的是一个整数。

2024-04-26 17:38:29

CMake用法详解

CMake用法详解

资料下载 assassin0613 2022-10-25 16:28:04

网优MapInfo 基本用法汇总资料下载

电子发烧友网为你提供网优MapInfo 基本用法汇总资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。

资料下载 张燕 2021-04-26 08:52:08

FreeRTOS plus的用法实例讲解

本文档的主要内容详细介绍的是FreeRTOS plus的用法实例讲解。

资料下载 佚名 2019-11-07 17:31:45

SQL的经典语句用法详细说明

本文档的主要内容详细介绍的是SQL的经典语句用法详细说明资料免费下载

资料下载 佚名 2019-10-22 16:11:39

51单片机C51语言的scanf和printf是如何使用的详细程序说明

本文档的主要内容详细介绍的是51单片机C语言的scanf和printf是如何使用的详细程序说明。

资料下载 绝代双骄 2019-08-26 17:30:00

c语言scanf的正确使用及技巧

函数的正确使用及一些技巧。 scanf函数的基本用法 scanf函数是通过格式控制字符串来确定输入变量的类型和格式的。它的基本使用方法是,首先将

2023-11-24 10:04:25

c语言怎么用scanf输入字符串

在C语言中,我们可以使用scanf函数来接收用户的输入。scanf函数有很多种用法,其中一种

2023-11-24 10:03:09

scanf在C语言中的作用

scanf在C语言中的作用  scanf是C语言中的输入函数,用于从标准输入设备(如键盘)读取数据,并将其存储到变量中。它是C语言中最常用的标准库函数之一,对于控制台交互式程序开发

2023-11-23 14:13:19

C语言使用scanf函数的注意事项

scanf函数中的格式控制后面应当是变量地址,而不是变量名。 * 如果在格式控制字符串中除了格式声明以外还有其他字符,则在输入数据时在对应的位置上应输入这些字符相同的字符。

2023-03-09 11:01:55

通过串口实现printf和scanf函数

参考51单片机实现scanf和printf函数通过串口实现printf和scanf函数适用于单片机的小型类shell的命令行软件目标如何从头开始一个单片机项目,结合STC8A来说一说我的做法,因为

2021-11-22 06:42:41

C语言内存操作有哪些陷进

如从stdin读取一个int变量时,scanf(“%d”, &val);是正确用法,若误写为scanf(“%d”, val);时,val的值会被

2020-09-22 14:45:01

关于 printf和scanf在开发STM32中的配置和应用

关于printf和scanf在开发STM32中的配置和应用

2020-03-24 10:50:41

7天热门专题 换一换
相关标签