📜  C 中所有形式的格式化 scanf()(1)

📅  最后修改于: 2023-12-03 15:29:44.440000             🧑  作者: Mango

格式化 scanf() 函数

介绍

scanf() 是 C 语言标准库中的一个函数,它用于从标准输入设备(通常是键盘)接收用户输入的数据。scanf() 函数可以按照格式指定输入的数据类型和格式,将用户输入的数据解析后赋值给对应的变量。

下面介绍一下格式化 scanf() 函数的使用方法。

语法

scanf() 函数的基本语法如下:

int scanf(const char *format, ...);

其中,format 是格式控制字符串,用于指定输入的数据类型和格式。scanf() 函数根据从 format 中读取的格式化字符串,从标准输入设备读取数据,并根据指定的数据类型和格式解析读取的数据。

scanf() 函数的返回值表示成功匹配并解析的数据项数(或者输入的数据项数),如果出现错误,则返回 EOF。

格式控制字符串

scanf() 函数的格式控制字符串包含了一些特殊的占位符,可以为不同数据类型(例如整数、浮点数、字符等)的输入值定义不同的格式。下面列出了一些常用的格式化占位符及其用途:

| 格式控制符 | 类型 | 说明 | | -------- | --------- | ------------------------------------------- | | %d | 整数 | 匹配十进制整数,可带符号(正号可省略) | | %i | 整数 | 匹配整数,可以是十进制、八进制或十六进制(0x 或 0X 前缀) | | %o | 整数 | 匹配八进制整数 | | %x、%X | 整数 | 匹配十六进制整数(小写字母或大写字母) | | %u | 无符号整数 | 匹配十进制无符号整数 | | %f | 浮点数 | 匹配浮点数,以十进制表示(可以用小数形式或指数形式) | | %e、%E | 浮点数 | 匹配浮点数,以指数形式表示 | | %g、%G | 浮点数 | 匹配浮点数,自动选择 %f 或 %e 格式 | | %s | 字符串 | 匹配字符串,跳过前导空白字符 | | %c | 字符 | 匹配单个字符,包括空格和制表符('\t') | | %% | 百分号 | 匹配百分号字符"%"

除了格式占位符,scanf() 中还支持一些修饰符,用于控制打印数据的长度、填充、左对齐等设置。下面是一些常见的修饰符:

  • *: 表示跳过此数据项,不赋值给对应的变量。
  • width:指定占用宽度,可以是固定宽度(例如 %4d)或者最大宽度(例如 %*s)。
  • -:指定左对齐(默认为右对齐)。
  • 0:指定用 0 填充空位(默认为空格)。
示例

下面是一些示例来演示如何使用 scanf() 函数进行格式化输入。

#include <stdio.h>

int main()
{
    int a, b;
    float c;
    char str[50];
    char ch1, ch2;

    // 基本使用示例
    printf("Please enter two integers: ");
    scanf("%d%d", &a, &b);
    printf("The sum of two integers is %d\n", a + b);

    // 不同进制示例
    printf("Please enter an octal number: ");
    scanf("%o", &a);
    printf("The decimal representation of the octal number is %d\n", a);

    // 浮点数示例
    printf("Please enter a float number: ");
    scanf("%f", &c);
    printf("The input float number is %f\n", c);

    // 字符串示例
    printf("Please enter a string: ");
    scanf("%s", str);
    printf("The input string is %s\n", str);

    // 单个字符示例
    printf("Please enter two characters: ");
    scanf("%c%c", &ch1, &ch2);
    printf("The input characters are %c and %c\n", ch1, ch2);

    return 0;
}
总结

scanf() 函数是 C 语言中一种常用的输入函数,它的格式化输入功能可以将用户输入的字符串转换成对应的数据类型,非常方便。在使用 scanf() 函数时,我们需要理解格式控制字符串中的各种格式化占位符及其修饰符,才能更好地处理输入数据。

参考资料