3 回答

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
getline函數(shù)
getline不是C庫(kù)函數(shù),而是C++庫(kù)函數(shù)。它會(huì)生成一個(gè)包含一串從輸入流讀入的字符的字符串,直到以下情況發(fā)生會(huì)導(dǎo)致生成的此字符串結(jié)束。1)到文件結(jié)束,2)遇到函數(shù)的定界符,3)輸入達(dá)到最大限度。
使用條件
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,請(qǐng)?jiān)谑褂猛瓿珊骹ree釋放。
n:如果是由系統(tǒng)malloc的指針,請(qǐng)?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);
}

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
讀取一行
可以看你上述代碼
infile.getline(buff, len);
一個(gè)參數(shù)是buffer, 后面一個(gè)是長(zhǎng)度
- 3 回答
- 0 關(guān)注
- 959 瀏覽
添加回答
舉報(bào)