c语言scanf跟gets有什么区别

#include <stdio.h> #include <string.h> void main () { int a, b; int c; char digit[10] = { "end" }; char number[10] = { "again" }; char str[10]; do { printf ( "请输入两个数:\n" ); scanf ( "%d%d", &a, &b); //这里改成gets ( str );为啥会多输出一行字 c = a+b; printf ( "这两个数字的和是%d\n", c ); loop: printf ( "输入end结束again重试:\n" ); scanf ( "%s", &str ); if ( strcmp ( digit, str ) == 0 ) { break; } else if ( strcmp ( number, str ) == 0 ) { continue; } else { goto loop; //想实现这一步的功能还有没有其他办法,老师说不要用loop } } while (1); }

gets 字符串中可以有空白符号,遇到回车终止输入。 scanf("%s")遇到第一个空白符号或者回车停止输入
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-28
char *gets(char *) 从标准输入读取字节流,遇到换行符或文件结束符终止。 例char a[64]; gets( a ); 那么会将读到的字符串保存到a字符数组中,使用的时候有数组越界的危险,要使接收输入的字符数组足够大。 int scanf ( Format [, Pointer, ... ]) 根据给定的格式从标准输入读取数据。 例scanf( "ds", a ); 从标准输入最多读取64个字符的字符串放到a数组中。比较安全。也可以按照格式,读取整数、浮点数等类型。
第2个回答  2014-04-28
scanf是输入函数,可以输入不同数据类型的变量,然后将变量传送到内存缓冲区,之后再调用,并且效率高,gets只适合输入字符串的
相似回答