zoukankan      html  css  js  c++  java
  • fgets读取文件时的注意事项

    1 文本文件 a.txt 内容如下

    
    
    2 c代码
      FILE *fil;
        if (!(fil = fopen("/home/rudy/projects/paser/a.txt", "rb"))) {
            printf("File I/O error,the File is not exist
    ");
            exit(0);
        }
     int line = 0;
    
        while(!feof(fil)) {
            if (fgetc(fil) == '
    ') {
                ++line;
            }
        }
        ++line;
    
        fclose(fil);
        if (!(fil = fopen("/home/rudy/projects/paser/a.txt", "rb"))) {
            printf("File I/O error,the File is not exist
    ");
            exit(0);
        }
        char ** all =(char **) malloc( line * sizeof(char *));
    
    
        for (int iCurrLineIndex = 0; iCurrLineIndex < line; ++iCurrLineIndex) {
    
            all[iCurrLineIndex] = (char *) malloc(20 );
    
            fgets(all[iCurrLineIndex], 21, fil);
        }
    
     for (int iCurrLineIndex = 0; iCurrLineIndex < line; ++iCurrLineIndex) {
            printf("this is len = %d 
    ",strlen(all[iCurrLineIndex]));
            for(int i = 0;i <11;i++) {
                if (all[iCurrLineIndex][i] == '')
                {
                    printf("%s
     ","this is 0");
                }else if ( all[iCurrLineIndex][i]== '
    ')
                {
                    printf("%s
     ","this is n");
                }else{
                    printf("%c ",all[iCurrLineIndex][i]);
                }
            }
            printf("
    ");
    
        }
    

    输出结果

     

    this is len = 10 
    1 2 3 4 5 6 7 8 9 this is n
     this is 0
     
    this is len = 10 
    a b c d e f g h i this is n
     this is 0
     
    this is len = 9 
    1 2 3 4 5 6 7 8 9 this is 0
     this is 0
    

    总结: fgets读取时,如果指定的读取大小,小于实际行大小 那么 不添加 做结尾,使用 ,然后接着读取没读完的当前行数据作为新的一行开始

        fgets读取时,如果指定读取大小.大于实际行大小,那么将 添加到末端.再添加

       不算做有效长度里的元素, 算有效长度里元素

  • 相关阅读:
    概率论与统计学---笔记
    实用概率论与数理统计学--笔记
    并发编程总结5-JUC-REENTRANTLOCK-3(非公平锁)
    并发编程总结4-JUC-REENTRANTLOCK-2(公平锁)
    并发编程总结3——JUC-LOCK-1
    DOCKER & SWARM1.2
    Docker
    hdfs命令
    并发编程总结2——java线程基础2
    并发编程总结1——java线程基础1
  • 原文地址:https://www.cnblogs.com/or2-/p/5933904.html
Copyright © 2011-2022 走看看