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; web