• fgets注意事项


    这是yjy的习题库,中途我在使用fgest时颇费了一点心思,特此记录一下。

    #include <stdio.h>
    
    #include <string.h>
    
    #include <stdlib.h>
    
    
    
    int main (void)
    
    {
    
        char (*arry)[6];
    
        int n,tmp,i,j;
    
        char *find;
    
    
        scanf("%d",&n);
    
        getchar();/* sancf 输入的时候会有换行符输入,该函数是为了吃掉
    ,因为fegets遇到
    就结束*/
    
        arry=(char (*)[6])malloc(n*sizeof(char)*6);
    
       
    
        for(i=0;i<n;i++) {
           /* fgets 读到count-1个字符或者遇到
    就终止,所以这里选择6 
           * 6-1=5  由于只会输入4个有用字符(例如为abcd),最后会有
    ,此时字符数组中有
           * 我输入的4个字符a b c d + 
        有
    是因为fgets要吸收输入时的
    ,且fgets会
           * 自动在最后加上。
           * NOTE:使用fegts,输入第二个参数时,建议为输入的有效字符+2,例如我这里要输入4个
           * 有效字符,为了容错
    和
           */
          if(fgets(arry[i],6,stdin)==NULL) {
    
            return -1;
    
            }
          if((find=strchr(arry[i],'
    '))!=NULL) {
    
                *find='';
            }
            /* 如果我们把6改成5,则需要把该屏蔽放开。
            * 因为如果为5,当输入abcd四个字符时,feget就会结束,此时还有
    在输入缓存区
            * 所以需要getchar();吃掉
    。最后的arry[i]中是a b c d  结尾。
            */
            /* getchar(); */ 
            
        }
        
        for(i=0;i<n;i++) {
    
            for(j=0;j<4/2;j++) {
    
                tmp=arry[i][j];
    
                arry[i][j]=arry[i][3-j];
    
                arry[i][3-j]=tmp;
    
            }
    
            printf("%s
    ",arry[i]);
    
        }
        
        free(arry);
    
        return 0;
    
    }

  • 相关阅读:
    web前端图片上传
    二级联动
    前端框架
    获取URL域名
    监听横屏竖屏
    下载中间件、爬虫中间件
    起始url的调度原理
    自定义代理IP
    爬虫深度控制
    手动处理cookie(实现一个点赞爬虫)
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/11385565.html
Copyright © 2020-2023  润新知