C语言获得文件一行

C语言获得一行的数据还是比较麻烦的,这里讲一下几种曾经用过的方法。

第一种,是最笨的方法,就是一个一个字符的读取,也是最容易想到的方法。具体实现如下:
void   read_line(char   line[])  
 
    FILE   *fp;  
    char   cChar;  
    int   i;  
    fp=fopen("read.txt","r");  
    i=0;  
    cChar=fgetc(fp);  
    while(cChar!='\n'   &&   !feof(fp))  
    {  
        line[i]=cChar;  
        i++;  
        cChar=fgetc(fp);  
    }  
    line[i]='\0';  
    return;  
}   
但是,这种方法效率比较低。

第二种,就是使用Linux环境下,有一个函数getline,说明如下:
#define _GNU_SOURCE
       #include <stdio.h>
       #include <stdlib.h>

       int main(void)
       {
            FILE * fp;
            char * line = NULL;
            size_t len = 0;
            ssize_t read;
            fp = fopen("/etc/motd", "r");
            if (fp == NULL)
                 exit(EXIT_FAILURE);
            while ((read = getline(&line, &len, fp)) != 1) {
                 printf("Retrieved line of length %zu :\n", read);
                 printf("%s", line);
            }
            if (line)
                 free(line);
            return EXIT_SUCCESS;
       }

第三种,如果使用C++的话,有一个方法比较简单
      ifstream   in("read.txt");  
      string   line;  
      getline(in,   line);  
      cout   <<   line;   

posted on 2013-11-21 12:07  voker  阅读(647)  评论(0编辑  收藏  举报

导航