zoukankan      html  css  js  c++  java
  • 用fgets()函数从屏幕上输入一字符串_BenRuanChinaUnix博客

    用fgets()函数从屏幕上输入一字符串_BenRuan-ChinaUnix博客




    当要从屏幕输入一字符串至缓冲区时,记住绝对不要用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 /*输出*/

  • 相关阅读:
    c#中out与ref的用法与区别
    一次不该出现的bug
    js弹出蒙版
    foreach中不能修改元素的值
    C#中使用正则表达式来过滤html字符
    细微之处才能显示水平
    js画直线 拓荒者
    XSLT模板转换XML文档 拓荒者
    怪异的JavaScript Date对象 拓荒者
    [转]C++ 笔记点滴 拓荒者
  • 原文地址:https://www.cnblogs.com/lexus/p/2552372.html
Copyright © 2011-2022 走看看