getline不是c庫函式,而是c++庫函式。它會生成乙個包含一串從輸入流讀入的字元的字串,直到以下情況發生會導致生成的此字串結束。1)到檔案結束,2)遇到函式的定界符,3)輸入達到最大限度。
linux標準c中使用條件:
#define _gnu_source
#include
函式宣告:
ssize_t getline(char **lineptr, size_t *n, file *stream);
返回值成功:返回讀取的位元組數。
失敗:返回-1。
引數:lineptr:指向存放該行字元的指標,如果是null,則有系統幫助malloc,請在使用完成後free釋放。
n:如果是由系統malloc的指標,請填0
stream:檔案描述符
那我們linux c中如何使用getline()函式呢?
c 有 fgets(), gets() 函式,也有getline.用於讀取一行
字元直到換行符,包括換行符。這個和我們前面那篇關於標準輸入輸出函式 流與緩衝區那篇中內容有聯絡,
printf() scanf() 屬於行緩衝,讀取一行資料(遇到'\n')便會重新整理。
我們可以利用getline()一行一行的讀取資料,下面我們做個小實驗:首先建立乙個檔案,在檔案中現實一些內容:
[cpp]view plain
copy
fs@ubuntu:~/qiang/getline$ mkdir test
fs@ubuntu:~/qiang/getline$ cd test/
fs@ubuntu:~/qiang/getline/test$ ls
fs@ubuntu:~/qiang/getline/test$ touch xiao
fs@ubuntu:~/qiang/getline/test$ touch qiang
fs@ubuntu:~/qiang/getline/test$ touch zhi
fs@ubuntu:~/qiang/getline/test$ touch hello
fs@ubuntu:~/qiang/getline/test$ touch world
fs@ubuntu:~/qiang/getline/test$ ls
hello qiang world xiao zhi
fs@ubuntu:~/qiang/getline/test$ ls >line.txt
fs@ubuntu:~/qiang/getline/test$ ls
hello line.txt qiang world xiao zhi
fs@ubuntu:~/qiang/getline/test$
看看line.txt裡面的內容:
執行程式如下:
[cpp]view plain
copy
#include
#include
intmain(
void
)
if(line)
free(line);
exit(exit_success);
}
執行結果如下:
[cpp]view plain
copy
fs@ubuntu:~/qiang/getline$ gcc -o getline getline.c
fs@ubuntu:~/qiang/getline$ ./getline
retrieved line of length 6 :
hello
retrieved line of length 9 :
line.txt
retrieved line of length 6 :
qiang
retrieved line of length 6 :
world
retrieved line of length 5 :
xiao
retrieved line of length 4 :
zhi
對比一下line.txt中的內容,可以看到每一行都被正確的讀取;。
這裡簡單提一下fopen()函式,fopen()函式是基於資料流的i/o操作中,用來開啟乙個檔案,或者說開啟乙個資料流,開啟資料流以後,就可以對資料流繼續擰輸入和輸出的操作。c語言中stdin、stdout、stderr分別是標準輸入流、標準輸出流及標準出錯流的邏輯目的,他們都預設對應相應的物理終端。在程式執行伊始,不需要進行open()操作,流自動開啟。關於檔案描述符和資料流的區別,後面會開文章專門寫這一篇
Linux C 學習之路
linux系統基礎 常用unix linux命令 熟悉檔案管理 文字處理 程序管理 網路 系統管理等各個方面大約100個常用的命令。深入了解bash 了解linux預設shell bash 的語法 命令執行 i o重定向 任務控制等。正規表示式基礎 由於unix linux中很多強大的文字處理命令如...
Linux C 學習之路
module01 linux系統基礎 由於本系列課程基於linux 或unix 熟悉linux作業系統是必要的前提。該模組的課程包含以下方面的內容 常用unix linux命令 熟悉檔案管理 文字處理 程序管理 網路 系統管理等各個方面大約100個常用的命令。深入了解bash 了解linux預設sh...
Linux C 學習筆記
1.linux 程序與訊號 檢視當前系統所有程序的shell命令 ps aux 檢視程序樹 pstree 檢視當前使用者啟動的程序 ps af kill 程序號 kill 9 程序號 強行殺死程序 killall 程序名字 如果乙個程序的父程序被殺死 則init就程式設計當前程序的父程序 了解實時作...