• gets(),fgets()的作用机制探究


    gets(),fgets()

    scanf("%d",&a)若接受形如

    2

    这样的输入后,缓冲区内会留一个 ,此后若调用gets等函数时会读出这个换行出现错误,需注意

    fgets(),gets()读到 处会停止,从而缓冲区内会留下一个 ,从而使以后的输入出现错误,需要用getchar()等方式处理掉

    对各种方式的gets(),fgets()的测试:

    测试例程:

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<cstdio>
     5 #include<queue>
     6 
     7 using namespace std;
     8 
     9 #define N 51
    10 #define A 105
    11 
    12 char maze[N][N];
    13 int g[A][A];
    14 int x,y;
    15 
    16 int main()
    17 {
    18     int count;
    19     scanf("%d",&count);
    20     while (count--)
    21     {
    22         memset(maze,-1,sizeof(maze));
    23         scanf("%d%d
    ",&x,&y);
    24         for (int i=0;i<y;i++)
    25         {
    26             fgets(maze[i],x+1,stdin);
    27 //            getchar();
    28         }
    29         
    30     }
    31     return 0;
    32 }
    View Code

    测试数据:

    2
    6 5
    ###   (每行6个字符,包括空格,不包括换行符)
    #A#A##
    # # A#
    #S ##
    #####

    每行后均有换行符

    测试:

    maze全初始化为-1

    由测试结果可知:gets():当读到换行符时停止,换行符一起读出缓冲区并写入字符串末尾

            fgets(char*,int num,FILE*):最多读入num-1个字符,并将第num位置为(若读入字符小于num-1个,则读入 或EOF后将其之后一位置为,结束)(若读到换行符,换行符也写入文件末尾)

            

            

  • 相关阅读:
    mvc 在ii7上发布时遇到的问题只解决
    @Html.Raw 显示Html的标签
    补发————grid布局
    补发————DOM与BOM
    web实验博客3.css-position
    web专业课学习及往后方向发展
    bom&dom
    网格代码
    简单用户注册表单
    自我介绍
  • 原文地址:https://www.cnblogs.com/giddens/p/4520601.html
Copyright © 2020-2023  润新知