用getchar函数输入一个字符(用fgets()函数从屏幕上输入一字符串_BenRuanChinaUnix博客)
标签:
face
3
字符串
缓冲区
程序
分类: C语言笔记当要从屏幕输入一字符串至缓冲区时 ,记住绝对不要用gets()函数!Man Page中的BUGS已说得很清楚了 ,gets()函数的存在只是为了兼容以前的程序 ,该函数接口设计得很有问题 ,就像strcpy()函数一样 ,用户提供一个缓冲区但却不能指定缓冲区的大小 ,这很可能导致缓冲区溢出错误 。使用gets()函数甚至比strcpy()函数更危险 ,因为strcpy()的输入和输出都来自程序内部 ,只要程序员小心点是可以避免错误的;但gets()函数读取的输入直接来自程序外部 ,用户很可能通过标准输入提供任意长的字符串而导致溢出 。
fgets(由文件中读取一字符串 ,也可以从屏幕上输入一字符串 ,见范例 。)
相关函数
open ,fread,fscanf ,getc
表头文件
include<stdio.h>
定义函数
char * fgets(char * s,int size,FILE * stream);
s ,数据存储位置;size,读取字符串的最大数量;stream ,指向FILE结构的指针 。
函数说明
fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间 ,直到出现换行字符 、读到文件尾或是已读了size-1个字符为止 ,最后会加上NULL作为字符串结束 。
返回值
fgets()若成功则返回s指针 ,返回NULL则表示有错误发生 。
#include<stdio.h>
int main(void)
{
char s[80];
fputs(fgets(s,80,stdin),stdout);
return 0;
}
执行
this is a test /*输入*/
this is a test /*输出*/
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!