Linux C学习--getline()函数
生活随笔
收集整理的這篇文章主要介紹了
Linux C学习--getline()函数
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
getline()函數(shù)是什么?百度百科這樣解釋:
getline不是C庫函數(shù),而是C++庫函數(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。 參數(shù): lineptr:指向存放該行字符的指針,如果是NULL,則有系統(tǒng)幫助malloc,請(qǐng)?jiān)谑褂猛瓿珊骹ree釋放。 n:如果是由系統(tǒng)malloc的指針,請(qǐng)?zhí)? stream:文件描述符 那我們linux c中如何使用getline()函數(shù)呢? C 有 fgets(), gets() 函數(shù),也有g(shù)etline.用于讀取一行字符直到換行符,包括換行符。這個(gè)和我們前面那篇關(guān)于標(biāo)準(zhǔn)輸入輸出函數(shù) 流與緩沖區(qū)那篇中內(nèi)容有聯(lián)系, printf() scanf() 屬于行緩沖,讀取一行數(shù)據(jù)(遇到'\n')便會(huì)刷新。 我們可以利用getline()一行一行的讀取數(shù)據(jù),下面我們做個(gè)小實(shí)驗(yàn):首先創(chuàng)建一個(gè)文件,在文件中現(xiàn)實(shí)一些內(nèi)容: [cpp]?view plaincopy
對(duì)比一下line.txt中的內(nèi)容,可以看到每一行都被正確的讀取;。 這里簡單提一下fopen()函數(shù),fopen()函數(shù)是基于數(shù)據(jù)流的I/O操作中,用來打開一個(gè)文件,或者說打開一個(gè)數(shù)據(jù)流,打開數(shù)據(jù)流以后,就可以對(duì)數(shù)據(jù)流繼續(xù)擰輸入和輸出的操作。C語言中stdin、stdout、stderr分別是標(biāo)準(zhǔn)輸入流、標(biāo)準(zhǔn)輸出流及標(biāo)準(zhǔn)出錯(cuò)流的邏輯目的,他們都默認(rèn)對(duì)應(yīng)相應(yīng)的物理終端。在程序運(yùn)行伊始,不需要進(jìn)行open()操作,流自動(dòng)打開。關(guān)于文件描述符和數(shù)據(jù)流的區(qū)別,后面會(huì)開文章專門寫這一篇 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)
總結(jié)
以上是生活随笔為你收集整理的Linux C学习--getline()函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LayaIDE + FGUI + Lay
- 下一篇: 美图秀秀首页界面按钮设计(二)