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

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

时间2025-06-19 19:24:43分类IT科技浏览4052
导读:标签:...

标签:

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
网络上有什么赚钱的好项目(网络里什么最好赚-互联网上最赚钱的两大生意)