黑马程序员技术交流社区

标题: scanf/getchar/gets的区别 [打印本页]

作者: gamyc    时间: 2015-5-23 16:51
标题: scanf/getchar/gets的区别
摘自:http://zhidao.baidu.com/link?url=Lqe9WmiqT8hseUPKkwC_J8YjYIR6RNM9C0Pw7e6LUcKLnUR7y3Jy9mk4Oac7Mns8GXp1qqDJIu_0KQSR3CW3wy1roQOiOKw0H0UQaqMXoi3
scanf();
输入形式:scanf("%d",&a);   scanf("%s",a)(或scanf("%s",&a),不正规);
一一对应:%d  int ;%f  float ;%lf   double ;%ld  long ;%I64d  __int64 ;%c  char  ;%s  char [] ;
返回值是,输入n个数据,则返回n,无输入,则返回-1,EOF(即end of file),是一个常量-1(可用-1代),操作是用Ctrl+Z。
一条语句可输入多个数据。
默认以空格来跳到下一个输入变量,若完成了本次调用时用户本次规定的输入量,可以缓冲起来,继续输入下一次调用该函数时的数据,发出执行指令后做一起处理。该函数不接收空格,多个空格等同一个空格。可以在一次规定的变量之间加上其他的符号来自定义跳转指令。
若完成了本次规定的输入量,回车表示执行本次要的操作;若未完成本次规定的输入量,则作用同于空格,是跳到下一个输入变量。该函数也不接收回车,多个回车等同一个回车。
故而要注意该函数只能正常接收无空格和字符串,当然含有回车符的字符串也是不行的。
gets();
输入形式:gets(a);(char a[ ]);
输入的对象是字符串,会把一切能接收进来的字符都接收进来(除了回车),如下面代码1中scanf()后面的空格和回车,以回车表示结束该字符串的输入结束。常以防干扰以代码2的形式和scanf();搭配。但是注意一切能接收是指上一个输入变量不要的字符,如上面的空格和回车,但是形如代码3,上一个回车是上一个字符串必要的结尾符,不能给下一个字符接收了。
getchar();
输入字符的函数,一次输入单个字符,可以接收任意形式的字符,可以把它付给一个字符变量,也可以不要接收器。若要用来输入字符串,则可以用EOF来结尾,形式是while((c=getchar())!=EOF)





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2