gets与scanf

来源:互联网 发布:绿色自行车是什么软件 编辑:程序博客网 时间:2024/05/17 21:53

本文摘自百度百科

gets函数的读取规则:

1.只要gets遇到换行符,即便它是输入的第一个字符,gets也会停止读入并返回。如果输入的第一个字符就是换行符,则字符串将被置为空串。

2.由于gets函数读入再丢弃换行符,换行符将不会存储在字符串中。

gets的读取规则与getline是一样的。

3.gets函数的返回值:

1.正常读入(未遇到文件结尾)(注意,读入空串也是正常读入),则返回字符串,即返回字符串首地址,char*类型

2.遇到文件结尾,返回NULL

scanf函数的读取规则

1 .对于字符串数组或字符串指针变量,由于数组名和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上"&"操作符。

2.可以在格式化字符串中的"%"格式化规定符之间加入一个整数,表示任何读操作中的最大位数。

3. scanf()函数中没有精度控制。

   如: scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。

4.scanf中要求给出变量地址,如给出变量名则会出错

   如 scanf("%d",a);是非法的,应改为scanf("%d",&a);才是合法的。

5.在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格,TAB或回车作间隔。

6.C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。

7. 在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。

8.scanf函数返回值:

scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。

例如:

scanf("%d%d",&a,&b);

如果a和b都被成功读入,那么scanf的返回值就是2

如果只有a被成功读入,返回值为1

如果a和b都未被成功读入,返回值为0

如果遇到错误或遇到end of file,返回值为EOF,且返回值为int型.

这也就是当多次读入数据的区别:

while(scanf("%d%d",&a,&b)!=EOF){}
或:
while(scanf("%d%d",&a&b)==2){}

while(gets(str)){}



0 0
原创粉丝点击