c语言gets,getc,C语言的getc()函数和gets()函数的使用对比
C语言getc()函数:从流中读取字符头文件:
#include
函数getc()用于从流中取字符,其原型如下:
int getc(FILE *stream);
【参数】参数*steam为要从中读取字符的文件流。
【返回值】该函数执行成功后,将返回所读取的字符。
【说明】若从一个文件中读取一个字符,读到文件尾而无数据时便返回EOF。getc()与fgetc()作用相同,但在某些库中getc()为宏定义,而非真正的函数。
【实例】下面的示例演示了getc()函数的使用,在程序中采用该函数从标准输入控制台中读取字符,代码如下。
#include //引入标准输入输出库
void main( ) {
char ch;
printf ("Input a character: "); //输入提示信息
ch = getc(stdin); // 从标准输入控制台中读取字符
printf ("The character input was: '%c'\n", ch); // 输出字符
}
运行上述程序,首先声明一个用于保存所取字符的变量;然后输 出提示信息,接收从标准输入控制台按下的任意键,并将该字符输出到控制台。
利用getc()从文件中读取字符串,代码如下。
#include
#include
#include
int main(void)
{
int ch;
int len;
int i=0;
FILE* fstream;
char msg[100] = "Hello!I have read this file.";
fstream=fopen("test.txt","at+");
if(fstream==NULL)
{
printf("read file test.txt failed!\n");
exit(1);
}
/*getc从文件流中读取字符*/
while( (ch = getc(fstream))!=EOF)
{
putchar(ch);
}
putchar('\n');
len = strlen(msg);
while(len>0)/*循环写入*/
{
putc(msg[i],fstream);
putchar(msg[i]);
len--;
i++;
}
fclose(fstream);
return 0;
}
函数fopen利用模式“at+”打开文本文件,使用getc从文件流中逐个读取字符,直到读完。
C语言gets()函数:从流中读取字符串
头文件:
#include
gets()函数用于从缓冲区中读取字符串,其原型如下:
char *gets(char *string);
gets()函数从流中读取字符串,直到出现换行符或读到文件尾为止,最后加上NULL作为字符串结束。所读取的字符串暂存在给定的参数string中。
【返回值】若成功则返回string的指针,否则返回NULL。
注意:由于gets()不检查字符串string的大小,必须遇到换行符或文件结尾才会结束输入,因此容易造成缓存溢出的安全性问题,导致程序崩溃,可以使用fgets()代替。
【实例】请看下面一个简单的例子。
#include
int main(void)
{
char str[10];
printf("Input a string.\n");
gets(str);
printf("The string you input is: %s",str); //输出所有的值,注意a
}
如果输入123456(长度小于10),则输出结果为:
Input a string.
123456↙
The string you input is:123456
如果输入12345678901234567890(长度大于10),则输出结果为:
Input a string.
12345678901234567890↙
The string you input is:12345678901234567890
同时看到系统提示程序已经崩溃。
如果不能正确使用gets()函数,带来的危害是很大的,就如上面我们看到的,输入字符串的长度大于缓冲区长度时,并没有截断,原样输出了读入的字符串,造成程序崩溃。
考虑到程序安全性和健壮性,建议用fgets()来代替gets()。
如果你在GCC中使用gets(),编译无法通过,会提示:
the 'gets' function is dangerous and shout not be used.
C语言gets()函数:从流中读取字符串头文件:
#include
gets()函数用于从缓冲区中读取字符串,其原型如下:
char *gets(char *string);
gets()函数从流中读取字符串,直到出现换行符或读到文件尾为止,最后加上NULL作为字符串结束。所读取的字符串暂存在给定的参数string中。
【返回值】若成功则返回string的指针,否则返回NULL。
注意:由于gets()不检查字符串string的大小,必须遇到换行符或文件结尾才会结束输入,因此容易造成缓存溢出的安全性问题,导致程序崩溃,可以使用fgets()代替。
【实例】请看下面一个简单的例子。
#include
int main(void)
{
char str[10];
printf("Input a string.\n");
gets(str);
printf("The string you input is: %s",str); //输出所有的值,注意a
}
如果输入123456(长度小于10),则输出结果为:
Input a string.
123456↙
The string you input is:123456
如果输入12345678901234567890(长度大于10),则输出结果为:
Input a string.
12345678901234567890↙
The string you input is:12345678901234567890
同时看到系统提示程序已经崩溃。
如果不能正确使用gets()函数,带来的危害是很大的,就如上面我们看到的,输入字符串的长度大于缓冲区长度时,并没有截断,原样输出了读入的字符串,造成程序崩溃。
考虑到程序安全性和健壮性,建议用fgets()来代替gets()。
如果你在GCC中使用gets(),编译无法通过,会提示:
the 'gets' function is dangerous and shout not be used.
c语言gets,getc,C语言的getc()函数和gets()函数的使用对比相关推荐
- c语言gets,getc,C++_C语言的getc()函数和gets()函数的使用对比,C语言getc()函数:从流中读取字 - phpStudy...
C语言的getc()函数和gets()函数的使用对比 C语言getc()函数:从流中读取字符头文件: #include 函数getc()用于从流中取字符,其原型如下: int getc(FILE *s ...
- 每个c语言程序文件的编译错误被分为什么,已打印中央电大C语言考试题库(c语言小题+编程)...
C语言程序设计课程期末复习练习 一.单选题 1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为( A ). A. main B. MAIN C. name D. function 2.每 ...
- C语言文件和文件相关读写、定位、检测函数总结
C语言文件相关内容总结 目录 C语言文件相关内容总结 一.文件是什么? 二.C语言中对文件的处理 三.函数解析 fopen()函数 exit()函数 getc()和putc()函数 fclose()函 ...
- C语言之EOF、feof函数、ferror函数
本文为转载文章,原文:C语言再学习 -- EOF.feof函数.ferror函数 EOF详解 1.定义: EOF是end of file的缩写,表示"文字流"(stream)的结尾 ...
- 大学c语言11页,C语言程序设计题库(11页)-原创力文档
一.选择题(每题 1 分,共 20 分) 1.C 语言程序从 main() 函数开始执行,所以这个函数要写在( D ). A .程序文件的开始 B .程序文件的最后 C.它所调用的函数的前面 D .程 ...
- r语言 断轴 画图_R语言基础画图/绘图/作图
R语言基础画图 R语言免费且开源,其强大和自由的画图功能,深受广大学生和可视化工作人员喜爱,这篇文章对如何使用R语言作基本的图形,如直方图,点图,饼状图以及箱线图进行简单介绍. 0 结构 每种图形构成 ...
- c语言随机数生成0 99函数,C语言生成随机数的函数、延时函数
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面C语言代码使用了生成随机数的函数.延时函数.请大家仔细观察其显示效果. 从以下代码,我们可以得出一个重要的结论:当上述两类函数被放入循环时,应作出一定 ...
- c语言 字母 八进制表示'/1011',C语言C语言第一课:C语言概述为什么学习C语言怎样学习C语言.DOC...
[摘要]C语言 第一课: C语言概述 为什么学习C语言 怎样学习C语言 参考资料 ----------------------------------------------------------- ...
- c++语言函数大全,C++函数
本篇文章帮大家学习C++函数,包含了C++函数使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. C++语言中的函数在其他编程语言中也称为过程或子例程. 我们可以创建函数来执 ...
- 学单片机需要多少C语言基础,C语言单片机编程教程
很多学员和朋友经常找我给他们推荐C语言的书,他们可能想和我当年一样,闷头大干一场,学个几个月的C语言,把C语言吃透,再开始单片机程序开发! 别!别!别! 大家千万别这么干,我当年自学了3个月的C语言, ...
最新文章
- Linux下的kill函数的用法
- CouldNOTfindQt4 install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer
- hdu1006 Tick and TIck
- Acwing 307. 连通图
- Python--协程(gevent模块)
- 信息学奥赛一本通(1060:均值)
- php期末作业经验,期末作业.php
- leetcode python3 简单题69. Sqrt(x)
- 【linux】xx is not in the sudoers file 解决办法
- HIVE 的笛卡尔积on无条件
- realtek 8111E 网卡 修改MAC 地址
- android基础教程:多个页面时如何设置首页
- 结构化程序设计知识点总结
- python封包和解包_Python基础——解包与封包
- python爬虫论文总结与展望怎么写_汉语言文学毕业论文总结与展望怎么写
- GC算法精解(五分钟让你彻底明白标记/清除算法)
- 360众筹网_360众筹平台
- qq 浏览器 android x86版,qq浏览器安卓版x86
- 吴恩达深度学习作业(week2)-(1)
- 英国全能数学家John Conway因新冠去世,他曾发明风靡一个时代的电脑游戏,还能心算万年历...
热门文章
- 深度学习 --- 优化入门五(Batch Normalization(批量归一化)二)
- java获取反射机制的三种方式
- MySQL安装 MySQL5.7.10免安装版配置,mysql5.7.10免安装版
- Spring 计划 7.0
- redhat linux 5.6 下安装oracle 11g 时netca报错不能配置监听解决方法
- ArcMap操作技巧
- 微软Windows2003的正版安装序列号
- 复制和删除文件夹所有内容
- 移动端的人脸检测及去重算法实践
- low latency playback、deep buffer playback、compressed offload playback的区别