跳至主要內容

prinf 与 scanf - C语言笔记

Kamimika...大约 3 分钟C语言C语言printfscanf笔记

本文主要介绍 C 语言标准库<stdio.h>中的格式化输出函数 printf() 和 格式化输入函数 scanf() 的基本用法。

一、printf()

语法:

int printf(const char *format, ...)

format 参数是一个格式字符串,它指定了输出内容的格式。在其中用 % 符号来表示格式化字符,用%%输出一个 % 符号自身。

printf 的格式化字符

语法:%[flags][width][.precision][length]specifier

specifier描述
%d十进制带符号整数(只有负数有符号)
%u十进制无符号整数
%x十六进制无符号整数(小写字母 a-f
%X十六进制无符号整数(大写字母 A-F
%o八进制无符号整数(前缀 0
%f浮点数(小数点后带有精度)
%e指数记数法的浮点数(小数点后带有精度)
%E指数记数法的浮点数(大写 E
%g自动选择 ef 格式(较短的)
%G自动选择 Ef 格式(较短的)
%s字符串(以空字符结束)
%c单个字符
%p指针地址
flags描述
-给定宽度内左对齐(默认右对齐)
+强制显示正负号
空格空格填充
#(o)显示八进制前缀0、(x, X)十六进制前缀0x, 0X
0给定宽度内不足的位数用 0 填充
  • width: 输出的最小宽度(包括符号),小于时默认填充空格,大于时不截断。

  • precision: 对于整数,表示进制转换后的位数(仅指整数位数);
    对于浮点数,表示小数点后的最大长度,不足用0补齐;
    对于字符串,表示字符串的最大长度,超过时截断。(不能与 width 同时使用)

length描述
h被解释为短整型(对于整数)
l被解释为长整型(对于整数或宽字符c,宽字符串s
L被解释为长双精度型(对于浮点数)

printf 示例

  • %+d: 输出带符号整数,正数前加 + 号,负数前加 - 号。
  • %05d: 输出带符号整数,不足 5 位的位数用 0 填充。
  • %5d: 输出带符号整数,不足 5 位的位数用空格填充。
  • %lf: 输出双精度浮点数(double)。
  • %Lf: 输出长双精度浮点数(long double)。

二、scanf()

语法:

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

format 参数是一个格式字符串,它指定了输入内容的格式。在其中用 % 符号来表示格式化字符,用%%读取一个 % 符号自身。

scanf 的格式化字符

语法:%[*][width][modifiers]

modifiers描述参数类型
%d十进制整数int*
%u十进制无符号整数unsigned int*
%x, %X十六进制整数int*
%o八进制无符号整数int*
%i十/八/十六进制整数(取决于输入的前缀)int*
%f, %e, %E, %g, %G单精度浮点数float*
%lf双精度浮点数double*
%Lf长双精度浮点数long double*
%s字符串(以空字符结束)char*
%c读取下一个字符(指定宽度可读取多个字符)char*
%p指针地址

注意

对于printf()方法,可以用%f输出单精度或双精度浮点数;
但对于scanf()方法%f只能读取单精度浮点数,读取双精度浮点数需要用%lf

scanf 示例

  • %d%d%d: 读取三个整数,并分别赋值给 int 型变量。示例输入:1 2 3
  • %d, %d, %d: 读取三个整数,并分别赋值给 int 型变量。示例输入:1, 2, 3
  • %s%d: 读取字符串和整数,并分别赋值给 char*int 型变量。示例输入:hello 123
上次编辑于:
贡献者: wzh
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.4.1