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()函数的使用对比相关推荐

  1. c语言gets,getc,C++_C语言的getc()函数和gets()函数的使用对比,C语言getc()函数:从流中读取字 - phpStudy...

    C语言的getc()函数和gets()函数的使用对比 C语言getc()函数:从流中读取字符头文件: #include 函数getc()用于从流中取字符,其原型如下: int getc(FILE *s ...

  2. 每个c语言程序文件的编译错误被分为什么,已打印中央电大C语言考试题库(c语言小题+编程)...

    C语言程序设计课程期末复习练习 一.单选题 1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为( A ). A. main B. MAIN C. name D. function 2.每 ...

  3. C语言文件和文件相关读写、定位、检测函数总结

    C语言文件相关内容总结 目录 C语言文件相关内容总结 一.文件是什么? 二.C语言中对文件的处理 三.函数解析 fopen()函数 exit()函数 getc()和putc()函数 fclose()函 ...

  4. C语言之EOF、feof函数、ferror函数

    本文为转载文章,原文:C语言再学习 -- EOF.feof函数.ferror函数 EOF详解 1.定义: EOF是end of file的缩写,表示"文字流"(stream)的结尾 ...

  5. 大学c语言11页,C语言程序设计题库(11页)-原创力文档

    一.选择题(每题 1 分,共 20 分) 1.C 语言程序从 main() 函数开始执行,所以这个函数要写在( D ). A .程序文件的开始 B .程序文件的最后 C.它所调用的函数的前面 D .程 ...

  6. r语言 断轴 画图_R语言基础画图/绘图/作图

    R语言基础画图 R语言免费且开源,其强大和自由的画图功能,深受广大学生和可视化工作人员喜爱,这篇文章对如何使用R语言作基本的图形,如直方图,点图,饼状图以及箱线图进行简单介绍. 0 结构 每种图形构成 ...

  7. c语言随机数生成0 99函数,C语言生成随机数的函数、延时函数

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面C语言代码使用了生成随机数的函数.延时函数.请大家仔细观察其显示效果. 从以下代码,我们可以得出一个重要的结论:当上述两类函数被放入循环时,应作出一定 ...

  8. c语言 字母 八进制表示'/1011',C语言C语言第一课:C语言概述为什么学习C语言怎样学习C语言.DOC...

    [摘要]C语言 第一课: C语言概述 为什么学习C语言 怎样学习C语言 参考资料 ----------------------------------------------------------- ...

  9. c++语言函数大全,C++函数

    本篇文章帮大家学习C++函数,包含了C++函数使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. C++语言中的函数在其他编程语言中也称为过程或子例程. 我们可以创建函数来执 ...

  10. 学单片机需要多少C语言基础,C语言单片机编程教程

    很多学员和朋友经常找我给他们推荐C语言的书,他们可能想和我当年一样,闷头大干一场,学个几个月的C语言,把C语言吃透,再开始单片机程序开发! 别!别!别! 大家千万别这么干,我当年自学了3个月的C语言, ...

最新文章

  1. Linux下的kill函数的用法
  2. CouldNOTfindQt4 install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer
  3. hdu1006 Tick and TIck
  4. Acwing 307. 连通图
  5. Python--协程(gevent模块)
  6. 信息学奥赛一本通(1060:均值)
  7. php期末作业经验,期末作业.php
  8. leetcode python3 简单题69. Sqrt(x)
  9. 【linux】xx is not in the sudoers file 解决办法
  10. HIVE 的笛卡尔积on无条件
  11. realtek 8111E 网卡 修改MAC 地址
  12. android基础教程:多个页面时如何设置首页
  13. 结构化程序设计知识点总结
  14. python封包和解包_Python基础——解包与封包
  15. python爬虫论文总结与展望怎么写_汉语言文学毕业论文总结与展望怎么写
  16. GC算法精解(五分钟让你彻底明白标记/清除算法)
  17. 360众筹网_360众筹平台
  18. qq 浏览器 android x86版,qq浏览器安卓版x86
  19. 吴恩达深度学习作业(week2)-(1)
  20. 英国全能数学家John Conway因新冠去世,他曾发明风靡一个时代的电脑游戏,还能心算万年历...

热门文章

  1. 深度学习 --- 优化入门五(Batch Normalization(批量归一化)二)
  2. java获取反射机制的三种方式
  3. MySQL安装 MySQL5.7.10免安装版配置,mysql5.7.10免安装版
  4. Spring 计划 7.0
  5. redhat linux 5.6 下安装oracle 11g 时netca报错不能配置监听解决方法
  6. ArcMap操作技巧
  7. 微软Windows2003的正版安装序列号
  8. 复制和删除文件夹所有内容
  9. 移动端的人脸检测及去重算法实践
  10. low latency playback、deep buffer playback、compressed offload playback的区别