跳至主要內容

prinf 与 scanf/getline - C语言笔记

Kamimika...大约 4 分钟C/CppC/Cppprintfscanf笔记

本文主要介绍 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

三、getline()

cin.getline(str, n)

char str[100];
cin.getline(str, 100);

cin.getline() 函数用于从输入流中读取一行字符,并将其存储到指定的字符数组中。该函数的参数包括:

  • str:要存储输入字符的字符数组。
  • n:要读取的最大字符数(包括空字符)。

getline(cin, str)

string str;
getline(cin, str);

getline() 函数用于从输入流中读取一行字符,并将其存储到指定的字符串中。该函数的参数包括:

  • cin:输入流对象(通常是 cin)。
  • str:要存储输入字符的字符串对象。

区别

cin.getline(str, n)getline(cin, str)
strchar* 类型 (C 风格字符串)strstring 类型 (C++风格字符串)
需要指定字符数组的最大长度 n不需要指定字符串的长度
上次编辑于:
贡献者: wzh656
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.4.3