C语言 scanf和gets函数的区别

2024-11-08 02:53:41
推荐回答(2个)
回答1:

gets
语法:
#include
char *gets( char *str );
gets()函数从标准输入读取字符并把它们加载到str(字符串)里,直到遇到新行(\n)或到达EOF.
新行字符翻译为一个null中断符. gets()的返回值是读入的字符串,如果错误返回NULL.

scanf
语法:
#include
int scanf( const char *format, ... );
scanf()函数根据由format(格式)指定的格式从stdin(标准输入)读取,并保存数据到其它参数.
它和printf()有点类似. format(格式)字符串由控制字符,空白字符和非空白字符组成.
控制字符以一个%符号开始,如下:

控制字符
说明

%c
一个单一的字符

%d
一个十进制整数

%i
一个整数

%e, %f, %g
一个浮点数

%o
一个八进制数

%s
一个字符串

%x
一个十六进制数

%p
一个指针

%n
一个等于读取字符数量的整数

%u
一个无符号整数

%[]
一个字符集

%%
一个精度符号

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

回答2:

scanf:格式输入函数
http://c.biancheng.net/cpp/html/34.html
gets :从缓冲区中读取字符串
http://c.biancheng.net/cpp/html/260.html