精华内容
下载资源
问答
  • fgets函数及其用法C语言fgets函数详解

    千次阅读 多人点赞 2019-09-12 10:30:28
    fgets() 的原型为: # include <stdio.h> char *fgets(char *s, int size, FILE *stream); # include <stdio.h> int main(void) { char str[20]; /*定义一个最大长度为19, 末尾是'\0'的字符数组来...

     

    fgets() 的原型为:
    # include <stdio.h>
    char *fgets(char *s, int size, FILE *stream);
    
    
    
    # include <stdio.h>
    int main(void)
    {
        char str[20];  /*定义一个最大长度为19, 末尾是'\0'的字符数组来存储字符串*/
        printf("请输入一个字符串:");
        fgets(str, 7, stdin);  /*从输入流stdin即输入缓冲区中读取7个字符到字符数组str中*/
        printf("%s\n", str);
        return 0;
    }

    输出结果是:
    请输入一个字符串:i love you
    i love

    我们发现输入的是“i love you”,而输出只有“i love”。原因是 fgets() 只指定了读取 7 个字符放到字符数组 str 中。“i love”加上中间的空格和最后的 '\0' 正好是 7 个字符。

    那有人会问:“用 fgets() 是不是每次都要去数有多少个字符呢?这样不是很麻烦吗?”不用数!fget() 函数中的 size 如果小于字符串的长度,那么字符串将会被截取;如果 size 大于字符串的长度则多余的部分系统会自动用 '\0' 填充。所以假如你定义的字符数组长度为 n,那么 fgets() 中的 size 就指定为 n–1,留一个给 '\0' 就行了。

    但是需要注意的是,如果输入的字符串长度没有超过 n–1,那么系统会将最后输入的换行符 '\n' 保存进来,保存的位置是紧跟输入的字符,然后剩余的空间都用 '\0' 填充。所以此时输出该字符串时 printf 中就不需要加换行符 '\n' 了,因为字符串中已经有了。

     

    # include <stdio.h>
    int main(void)
    {
        char str[30];
        char *string = str;  //一定要先给指针变量初始化
        printf("请输入字符串:");
        fgets(string, 29, stdin);  //size指定为比字符数组元素少一就行了
        printf("%s", string);  //printf中不需要添加'\n', 因为字符串中已经有了
        return 0;
    }

    输出结果是:
    请输入字符串:i love studying C语言
    i love studying C语言

    我们看到,printf 中没有添加换行符 '\n',输出时也自动换行了。

    所以 fgets() 和 gets() 一样,最后的回车都会从缓冲区中取出来。只不过 gets() 是取出来丢掉,而 fgets() 是取出来自己留着。但总之缓冲区中是没有回车了!所以与 gets() 一样,在使用 fgets() 的时候,如果后面要从键盘给字符变量赋值,那么同样不需要清空缓冲区。下面写一个程序验证一下。

     

    # include <stdio.h>
    int main(void)
    {
        char str[30];
        char ch;
        printf("请输入字符串:");
        fgets(str, 29, stdin);
        printf("%s", str);  //后面不要加'\n'
        scanf("%c", &ch);
        printf("ch = %c\n", ch);
        return 0;
    }

    输出结果是:
    请输入字符串:i love you
    i love you
    Y
    ch = Y

    展开全文
  • c语言fgets函数用法

    万次阅读 2018-03-23 11:46:13
    fgets()函数用于从文件流中读取一行或指定个数的字符,其原型为: char * fgets(char * string, int size, FILE * stream);参数说明:string为一个字符数组,用来保存读取到的字符。size为要读取的字符的个数。如果...
    fgets()函数用于从文件流中读取一行或指定个数的字符,其原型为:
    
        char * fgets(char * string, int size, FILE * stream);

    参数说明:
    string为一个字符数组,用来保存读取到的字符。
    size为要读取的字符的个数。如果该行字符数大于size-1,则读到 size-1 个字符时结束,并在最后补充' \0';如果该行字符数小于等于 size-1,则读取所有字符,并在最后补充 '\0'。即,每次最多读取 size-1 个字符。
    stream为文件流指针。
    【返回值】读取成功,返回读取到的字符串,即string;失败或读到文件结尾返回NULL。因此我们不能直接通过fgets()的返回值来判断函数是否是出错而终止的,应该借助feof()函数或者ferror()函数来判断。

    注意:fgets()与gets()不一样,不仅仅是因为gets()函数只有一个参数 FILE *stream,更重要的是,fgets()可以指定最大读取的字符串的个数,杜绝了gets()使用不当造成缓存溢出的问题
    展开全文
  • C语言fgets函数

    千次阅读 2018-12-08 22:57:52
    C 库函数 - fgets() 描述 C 库函数 char *fgets(char *str, int n, FILE *stream) 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。...下面是 fgets() 函数的声明。 char *fgets(char...

    C 库函数 - fgets()

    描述

    C 库函数 char *fgets(char *str, int n, FILE *stream) 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

    声明

    下面是 fgets() 函数的声明。

    char *fgets(char *str, int n, FILE *stream)

    参数

    • str -- 这是指向一个字符数组的指针,该数组存储了要读取的字符串。
    • n -- 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
    • stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。

    返回值

    如果成功,该函数返回相同的 str 参数。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指针。

    如果发生错误,返回一个空指针。

    实例

    下面的实例演示了 fgets() 函数的用法。

    #include <stdio.h>
    
    int main()
    {
       FILE *fp;
       char str[60];
    
       /* 打开用于读取的文件 */
       fp = fopen("file.txt" , "r");
       if(fp == NULL) {
          perror("打开文件时发生错误");
          return(-1);
       }
       if( fgets (str, 60, fp)!=NULL ) {
          /* 向标准输出 stdout 写入内容 */
          puts(str);
       }
       fclose(fp);
       
       return(0);
    }

    假设我们有一个文本文件 file.txt,它的内容如下。文件将作为实例中的输入:

    We are in 2014

    让我们编译并运行上面的程序,这将产生以下结果:

    We are in 2014

     

    展开全文
  • C语言fgets()函数用法总结

    千次阅读 2020-02-27 12:47:34
    从c++11之后取消了gets()函数,用fgets()代替,用法有所不同,这里详细介绍下fgets()该如何使用。 char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 第一个参数为数据存放的数组,第二个...

    从c++11之后取消了gets()函数,用fgets()代替,用法有所不同,这里详细介绍下fgets()该如何使用。

    char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
    第一个参数为数据存放的数组,第二个参数为最大长度,第三个参数为输入源,我们从键盘读入,参数为stdin。

    
    #include <stdio.h>
    #include <cstring>
    
    char A[20];
    int main() {
        fgets(A , 20, stdin);
        int lengthA = strlen(A)-1;
        printf("lenA:%d\n",lengthA);
        printf("start: %c\n",A[0]);
        printf("end: %c",A[lengthA-1]);
        return 0;
    }
    
    

    在这里插入图片描述

    可以看到fgets()读取的字符串长度包含了结尾的 ‘\0’,遍历数组时要注意下标越界。strlen(A)-1 为字符串实际长度。

    如果要从指定位置存储字符串呢

    可以给第一个参数指定开始存储的位置

    
    #include <stdio.h>
    #include <cstring>
    
    char A[20];
    int main() {
        fgets(A+1 , 20, stdin);
        int lengthA = strlen(A+1)-1;
        printf("lenA:%d\n",lengthA);
        printf("start: %c\n",A[1]);
        printf("end: %c",A[lengthA]);
        return 0;
    }
    
    

    在这里插入图片描述

    我们从下标为1的位置插入长度为3的字符串asd,此时A[0]的位置为null 计算字符串长度也应该相应的从A+1开始,如strlen(A+1),否则会出错。
    我们使用strlen(A)测试如下:
    在这里插入图片描述

    使用fgets(),相应的也要使用fputs()输出。
    fputs (const char *__restrict __s, FILE *__restrict __stream)
    第一个参数为输出的数组,第二个参数为输出方式。我们使用stdout输出到屏幕

    展开全文
  • c语言fgets函数的返回值,什么情况下返回空指针。c语言fgets函数的返回值,什么情况下返回空指针。如题fgets 是系统输入函数,从文件流读入一行字符串,含空格键等,函数原型是: char * fgets ( char * str, ...
  • 今天我用fgets函数写代码时也遇到一个问题:在第一次调用fgets函数后程序不会阻塞,而是输出一个回车键,待第二次遇到fgets函数时,程序才阻塞。 经过好长时间的排查,才发现问题所在——在第一次调用fgets函数时,...
  • fgets函数使用

    千次阅读 2020-07-29 21:49:07
    fgets函数的函数原型:char *fgets(char * ch,int mode,FILE *fp); 第一个参数ch是一个字符数组; 第二个参数mode表示这个数组需要读取多少个字符; 第三个参数fp表示一个文件指针; fgets函数可以在读取(mode-1)个...
  • C语言 fgets函数与fputs函数用法

    千次阅读 2017-07-11 18:05:05
    fgets (buf, size, fp) 其行为方式如下: (1)遇到换行或文件结束EOF则返回。 (2)按行读取。 (3)每一行结束处的换行字符‘/n’也算该行字符。 (4)对于大小为size的buf,最多只读取size-1个字符。 (5)...
  • 这篇文章要探讨的是“fgets()函数的详解以及使用时需要注意的一些细节”。涉及fgets()函数的应用和需要注意的问题。属于C语言基础篇(持续更新)。 fgets()(函数原型:char *fgets(char *restrict str, int size, ...
  • 每当讨论 gets 函数时,大家不由自主地就会想起 1988 年的“互联网蠕虫”,它在 UNIX 操作系统的 finger 后台程序中使用一个 gets 调用作为它的攻击方式之一。很显然,对蠕虫病毒的实现来说, gets 函数的功劳不可...
  • C语言常用函数用法大全

    千次阅读 2021-05-18 15:17:46
    C语言是当中广泛的计算机编程语言,是所有计算机编程语言的祖先,其他计算机编程语言...在C语言学习过程当中,除了学习好C语言基本语法外,掌握常用的C语言库函数的使用也是非常重要的,本文主要给同学们详细讲解在...
  • C语言文件操作中fgets与fputs函数讲解本文主要介绍了C语言文件操作中 fgets与fputs 函数详解的相关资料,下面是小编为大家整理的C语言文件操作中fgets与fputs函数讲解,欢迎参考~先给出apifgets语法:#includechar *...
  • C语言fgets()函数(以指定长度读取文件中的字符,并存入字符数组变量中) 需要引入C 标准库 - <stdio.h> 文章目录描述声明参数返回值实例测试(确实只能读n-1个字符) 描述 C 库函数 char *fgets(char *str, ...
  • C语言——fgets用法

    2019-01-22 16:22:27
    函数原型 #include&lt;stdio.h&gt; int fgetc(FILE*stream); 返回值:成功时返回读到的字符,返回的是int类型(实际值时字符)失败或读到文件尾,返回EOF(就是-1) 作用:从文件中读取一个字符 实例: #...
  • C语言 strchr 函数用法

    2021-05-19 16:14:48
    C语言 strchr 函数用法C语言中strchr函数作用是为在一个串中查找给定字符的第一个匹配之处,该函的原型为“char *strchr(const char *str, int c)”,使用时向str传入要被检索的字符串,c传入要搜索的字符即可。...
  • fgets()函数使用分析

    千次阅读 2020-05-15 16:25:24
    1、fgets函数的特点: 读取n-1(n为数组个数,第n个位置会自动添加‘\0’)个字符,以'\n'为结束标记,并在读取到‘\n’之后,在末尾处添加'\0'构成字符串; 当读了n-1个字符后,仍未读到'\n',也会自动添加‘\0’...
  • c语言中读取字符串有多种方法,比如scanf() 配合%s使用,但是这种方法只能获取一个单词,即遇到空格等空字符就会返回。如果要读取一行字符串,比如: I love BIT 这种情况,scanf()就无能为力了。这时我们最先想到...
  • 他们的使用方法及注意事项如下: 1.scanf() 它是一种格式化的输入方式,可一次性按照规定的格式输入多个数据域。 scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。与printf函数相同,C语言也允许在...
  • C语言:各种函数用法

    千次阅读 2019-08-28 14:53:03
    1.函数调用 函数调用有三种方式: 1.作为语句调用: ...2.c语言函数函数的定义不能被嵌套,函数调用可以被嵌套 函数的默认值不允许为局部变量 建立自定义函数的目的是: 1.调用时只需要明白函数的功...
  • fgets函数和fputs函数 一、fgets函数 fgets函数用来从文件中读入字符串。fgets函数的调用形式如下: fgets(str,n,fp); 此处,fp是文件指针,str是存放字符串的起始地址,n是一个int型变量。函数的功能是从fp所...
  • 头文件:includefgets()函数用于从文件流中读取一行或指定个数的字符,其原型为:char * fgets(char * string, int size, FILE * stream);参数说明:string为一个字符数组,用来保存读取到的字符。size为要读取的...
  • C语言中 fputs() fgets() 的使用方法

    千次阅读 2019-01-08 06:24:44
     一、读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针); 其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的...
  • 【转载】fgets函数用法详解

    千次阅读 多人点赞 2019-12-15 12:18:40
    但是 gets() 有一个非常大的缺陷,即它不检查预留存储区是否能够容纳实际输入的数据,换句话说,如果输入的字符数目大于数组的长度,gets 无法检测到这个问题,就会发生内存越界,所以编程时建议使用 fgets()。...
  • fgets() 函数用来从指定的文件中读取一个字符串,并保存到字符数组中,它的用法为: char *fgets ( char *str, int n, FILE *fp ); str 为字符数组,n 为要读取的字符数目,fp 为文件指针。 返回值:读取成功时...
  • C语言fgets()函数

    千次阅读 2016-09-19 00:07:34
    从文件结构体指针stream中读取数据,每次读取一行。...如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。
  • 1 注意fgets函数的第二个参数n,是包括结束符在内的总字数,实际强制性从键盘只能读入n-1个字符。 2 strlen函数遇结束符就会停止,返回结束符之前的字符数。 3 在scanf函数中,可以使用%c来读取一个字符,使用%s...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,072
精华内容 3,228
关键字:

c语言fgets函数用法

c语言 订阅