百科

gets和scanf有什么区别

都是从输入流中读取数据,但功能有很大差别:

1 操作类型不同。gets函数仅用于读入字符串。scanf为格式化输出函数,可以读入任意C语言基础类型的变量值,而不是仅限于字符串(char*)类型。

2 截止字符不同。gets函数固定的以换行符作为结尾,遇到换行符时结束输入。scanf函数默认以空白函数结尾,同时可以对截止函数进行修改。

3 对截止字符处理不同。gets函数会读入截止字符\n, 同时将\n自动替换为\0.scanf遇到截止字符时不会继续读取,截止字符将存储于输入缓冲中。

4 返回值类型不同。gets的返回值为char*型,当读入成功时会返回输入的字符串指针地址,出错时返回NULL。scanf返回值为int型,返回实际成功赋值的变量个数,当遇到文件结尾标识时返回EOF。