zoukankan      html  css  js  c++  java
  • C 语言中的 fgets()

    转自:http://blog.csdn.net/daiyutage/article/details/8540932

    原型:

      char *  fgets(char * s, int n,FILE *stream);

    参数:

      s: 字符型指针,指向存储读入数据的缓冲区的地址。

      n: 从流中读入n-1个字符。

      stream : 指向读取的流。

    返回值:

      1. 当n<=0 时返回NULL,即空指针。

      2. 当n=1 时,返回空串""。

      3. 如果读入成功,则返回缓冲区的地址。

      4. 如果读入错误或遇到文件结尾(EOF),则返回NULL。

    标准库中的实现:

    char *fgets(char *s, int n,  FILE *stream)  
    {  
         register int c;  
         register char *cs;  
         cs=s;  
         while(--n>0 &&(c = getc(stream))!=EOF)  
           if ((*cs++=  c) =='
    ')  
            break; *cs =''; return (c == EOF && cs == s) ?NULL :s ; }

    注意:

    在用fgets(..)读入数据时,先定义一个字符数组或字符指针,如果定义了字符指针 ,那么一定要初始化。

    example:

                  char s[100]; //可以。

                  char *s;  //不可以,因为只是声明了一个指针。但并没有为它分配内存缓冲区。

    所以,如果要用指针,则  char *s=(char *)malloc(100*sizeof(char)) 为其分配内存空间,c++中用char *s=new char [100]。如果未分配内存空间,编译时不会检查出问题,但运行时会出现未知错误(曾经出现过的错误是“段错误(核心已转储)”)。

    有关 “段错误(核心已转储)” 的可能原因详见:Linux 下运行 C++ 程序出现 “段错误(核心已转储)”

  • 相关阅读:
    Orleans介绍
    Orleans入门
    mongodb for windows安装
    ASP.NET Identity
    OWIN与Katana
    手动搭建ABP2.1.3 Zero——基础框架
    ABP学习笔记
    ABP-Zero模块
    ABP单元测试
    ABP-JavaScript API
  • 原文地址:https://www.cnblogs.com/sylar5/p/6638099.html
Copyright © 2011-2022 走看看