导航号,我的单页导航
文章目录

前言

简单记录一下scanf的使用。

scanf()函数根据由format(格式)指定的格式从stdin(标准输入)读取,并保存数据到其它参数。

正文

scanf说明

语法:

#include <stdio.h>  int scanf( const char *format, ... ); 

PS:返回的int是根据format成功读取到的个数!

format(格式)字符串由控制字符,空白字符和非空白字符组成。

控制字符以一个%符号开始,如下:

控制字符 说明 
%c 一个单一的字符 
%d 一个十进制整数 
%i 一个整数 
%e, %f, %g 一个浮点数 
%o 一个八进制数 
%s 一个字符串 
%x 一个十六进制数 
%p 一个指针 
%n 一个等于读取字符数量的整数 
%u 一个无符号整数 
%[] 一个字符集 
%% 一个精度符号 

scanf()读取匹配format(格式)字符串的输入。当读取到一个控制字符,它把值放置到下一个变量。空白(tabs, 空格等等)会跳过。 非空白字符和输入匹配,然后丢弃。如果是一个在%符号和控制符间的数量, 那么只有指定数量的字符转换到变量中。 如果scanf()遇到一个字符集(用%[]控制字符表示), 那么在括号中的任意字符都会读取到变量中。 scanf()的返回值是成功赋值的变量数量, 发生错误时返回EOF。

format有逗号

int num = scanf("%d,%d", &a, &b);
printf("a   = %d \n", a);
printf("b   = %d \n", b);
printf("num = %d \n", num);
以逗号分割
1,2
a   = 1
b   = 2
num = 2
以空格分割
1 2
a   = 1
b   = 0
num = 1

format有空格

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

printf("a   = %d \n", a);
printf("b   = %d \n", b);
printf("num = %d \n", num);
以空格分割
1 2
a   = 1
b   = 2
num = 2
以逗号分割
1,2
a   = 1
b   = 0
num = 1

小结

  1. 如果format= "%d,%d"以逗号分割,必须带入逗号

  2. 如果format= "%d %d"以空格分割,必须带入空格

参考文章

  1. C/C++ 语言参考手册

© 版权声明
导航号,我的单页导航

暂无评论

暂无评论...