C语言中gets和scanf两个函数都可以用于读取字符串,但它们之间存在一些区别:
1. gets可以接收空格,而scanf遇到空格、回车和Tab键都会认为输入结束,因此它不能接收空格。例如,当输入为"hel lo world"时,gets的运行结果是"hello w orld",而scanf只能输出"hello"。2. 对于末尾回车符的处理,scanf把回车符保留在缓存中,而gets接收回车,但把回车替换为\0。
3. gets的返回值为char*型,当读入成功时会返回输入的字符串指针地址,出错时返回NULL;scanf返回值为int型,返回实际成功赋值的变量个数,当遇到文件结尾标识时返回EOF。
4. gets函数仅用于读入字符串;scanf为格式化输出函数,可以读入任意C语言基础类型的变量值,而不是仅限于字符串(c har*)类型。
##以下此例子就是只能用gets而不是scanf
为了防止运行时遇到空格直接结束,因此在输入a时调用了gets函数。