getline函式可以獲取檔案中的一行資料。
原函式形式為
ssize_t getline(char **linepter,size_t *n,file *stream)
返回型別ssize_t為有符號整形,其值為獲取的字元數,檔案結束則返回-1,包括換行符』\n』,但不包括字串結束符』\0』。
linepter用來儲存獲得的字串,size_t為無符號整形表示linepter的位元組數。當*linepter為空時函式則動態為其分配
空間,注意要將size_t值賦0。當linepter的空間不足時,函式會通過realloc,重新分配更大的空間。stream為檔案指
針,用於讀取檔案。
在了解了系統的getline函式後,根據其功能自己進行了實現。
ssize_t mygetline(char** line,size_t *n,file *fp)
//buf為或n為0時動態為期分配空間
while((c=fgetc(fp))!='\n')
else
}*(buf+i++)='\n';
*(buf+i)='\0';
return i;
字元』\n』為一行的結束,eof是檔案結束標誌。
測試**:
int main()
char *buf = null;
size_t i=0;
ssize_t l;
while((l=mygetline(&buf,&i,fp))!=-1)
free(buf);
fclose(fp);
exit(exit_success);
return 0;
}
c語言實現getline函式
getline函式可以獲取檔案中的一行資料。原函式形式為 ssize t getline char linepter,size t n,file stream 返回型別ssize t為有符號整形,其值為獲取的字元數,檔案結束則返回 1,包括換行符 n 但不包括字串結束符 0 linepter用來儲存...
C 中的getline 函式
getline 函式是c 庫函式。它會生成乙個包含一串從輸入流讀入的字元的字串,直到以下情況發生會導致生成的此字串結束。1 到檔案結束,2 遇到函式的定界符,3 輸入達到最大限度。我們一般用string輸入字串時不能讀取空格,我們可以用getline 函式從輸入流中讀取,getline 函式之前的回...
C 中的getline函式
c 中本質上有兩種getline函式,一種在標頭檔案 istream 中,是istream類的成員函式。一種在標頭檔案 string 中,是普通函式。一 在 istream 中的getline函式有兩種過載形式 istream getline char s,streamsize n istream ...