C语言获得文件一行
C語(yǔ)言獲得一行的數(shù)據(jù)還是比較麻煩的,這里講一下幾種曾經(jīng)用過的方法。
第一種,是最笨的方法,就是一個(gè)一個(gè)字符的讀取,也是最容易想到的方法。具體實(shí)現(xiàn)如下:
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環(huán)境下,有一個(gè)函數(shù)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++的話,有一個(gè)方法比較簡(jiǎn)單
??? ? ifstream?? in("read.txt");??
? ??? string?? line;??
? ??? getline(in,?? line);??
? ??? cout?? <<?? line;???
轉(zhuǎn)載于:https://www.cnblogs.com/zhanghaifeng/p/3435294.html
總結(jié)
- 上一篇: Linux下找不到动态链接库
- 下一篇: IK分词源代码分析学习——与solr4.