3 回答

TA貢獻1878條經(jīng)驗 獲得超4個贊
getline函數(shù)
getline不是C庫函數(shù),而是C++庫函數(shù)。它會生成一個包含一串從輸入流讀入的字符的字符串,直到以下情況發(fā)生會導(dǎo)致生成的此字符串結(jié)束。1)到文件結(jié)束,2)遇到函數(shù)的定界符,3)輸入達到最大限度。
使用條件
linux標(biāo)準(zhǔn)C中使用條件:
#define _GNU_SOURCE
#include <stdio.h>
函數(shù)聲明:
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
返回值
成功:返回讀取的字節(jié)數(shù)。
失敗:返回-1。
lineptr:指向存放該行字符的指針,如果是NULL,則有系統(tǒng)幫助malloc,請在使用完成后free釋放。
n:如果是由系統(tǒng)malloc的指針,請?zhí)?
stream:文件描述符
應(yīng)用舉例:
#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);
exit(EXIT_SUCCESS);
}
- 3 回答
- 0 關(guān)注
- 960 瀏覽
添加回答
舉報