黑马程序员-C语言的输入函数
2015-10-21 22:13
253 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
在C语言中,常用的用于输入的函数有 scanf,gets,fgets
相比较这三个输入函数,都有各自的优缺点,以输入字符串为例。
scanf 函数,优点:在输入字符串,不检查长度,你输入多少,他就使用多少内存。另外可以用于多种数据类型的输入。
缺点:输入多少就占用多少内存,即使是系统关键内存,也可以覆盖掉,可能会引发错误。另外就是,输入的字符串无法含有空格。
gets函数,优点:相比较scanf函数来说,可以输入空格,应该是gets函数最大的优点了。
缺点:其没有指定输入字符的大小,限制输入缓冲区得大小,如果输入的字符大于定义的数组长度,会发生内存越界,堆栈溢出。后果很严重。
fgets函数,优点:安全,函数原型为char *fgets(char *buf, int bufsize, FILE *stream) ,当输入的时候限定了输入字符串的长度,不会发生内存越界,堆栈溢出。
缺点:只能输入字符串。
当我们在程序中需要使用输入的时候,为了程序的安全性来考虑,建议使用fgets来进行输入。
在C语言中,常用的用于输入的函数有 scanf,gets,fgets
相比较这三个输入函数,都有各自的优缺点,以输入字符串为例。
scanf 函数,优点:在输入字符串,不检查长度,你输入多少,他就使用多少内存。另外可以用于多种数据类型的输入。
缺点:输入多少就占用多少内存,即使是系统关键内存,也可以覆盖掉,可能会引发错误。另外就是,输入的字符串无法含有空格。
gets函数,优点:相比较scanf函数来说,可以输入空格,应该是gets函数最大的优点了。
缺点:其没有指定输入字符的大小,限制输入缓冲区得大小,如果输入的字符大于定义的数组长度,会发生内存越界,堆栈溢出。后果很严重。
fgets函数,优点:安全,函数原型为char *fgets(char *buf, int bufsize, FILE *stream) ,当输入的时候限定了输入字符串的长度,不会发生内存越界,堆栈溢出。
缺点:只能输入字符串。
当我们在程序中需要使用输入的时候,为了程序的安全性来考虑,建议使用fgets来进行输入。
相关文章推荐
- 5-36 复数四则运算
- 《我与c++的第二次相遇》 --1 【重新学习c++】
- vc++ 操作excel
- 用筛法求之N内的素数。
- c++中介者模式
- 用迭代法求 。求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001。 输出保留3位小数
- C语言:一个球从 100 米落下,每次落地后反跳回原一半,再落下,再反弹。求第10次高度?sum?
- C++ const 限定符
- RAII惯用法:C++资源管理的利器
- c++多线程编程
- 1009. 说反话 (20)
- C语言:有一个分数序列,2/1+3/2+5/3+8/5+13/8+…求出这个数列前 20 项的和
- C++中尖括号和引号的区别---转载
- C++学习——模板与异常处理
- C++ 中捕获整数除零错误
- C++学习——继承
- c语言中预编译
- c++学习——类
- C++学习——函数
- 1012. 数字分类 (20)