首页IT科技用getchar函数输入一个字符(用fgets()函数从屏幕上输入一字符串_BenRuanChinaUnix博客)

用getchar函数输入一个字符(用fgets()函数从屏幕上输入一字符串_BenRuanChinaUnix博客)

时间2025-05-02 09:49:31分类IT科技浏览3563
导读:标签:...

标签:

face

3

字符串

缓冲区

程序

分类: C语言笔记

当要从屏幕输入一字符串至缓冲区时            ,记住绝对不要用gets()函数!Man Page中的BUGS已说得很清楚了                   ,gets()函数的存在只是为了兼容以前的程序        ,该函数接口设计得很有问题         ,就像strcpy()函数一样                  ,用户提供一个缓冲区但却不能指定缓冲区的大小           ,这很可能导致缓冲区溢出错误            。使用gets()函数甚至比strcpy()函数更危险      ,因为strcpy()的输入和输出都来自程序内部                  ,只要程序员小心点是可以避免错误的;但gets()函数读取的输入直接来自程序外部              ,用户很可能通过标准输入提供任意长的字符串而导致溢出                   。

可以利用fgets()函数从屏幕上输入一字符串:

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则表示有错误发生           。

example:

#include<stdio.h>

int main(void)

{

char s[80];

fputs(fgets(s,80,stdin),stdout);

return 0;

}

注意:stdin                   、stdout        、stderr是三个FILE *指针                  ,这三个指针在libc中定义           ,在stdio.h中声明      。printf向stdout(standard output)写;scanf向stdin(standard input)读;stderr(standard error)标准错误输出                  。

执行

this is a test /*输入*/

this is a test /*输出*/

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
win双屏切换屏幕(win10双屏怎么切换屏幕? win10双屏幕切换的技巧) rds sys(rds.exe – rds是什么进程 有什么用)