linux按行讀取 空行丟棄

2021-09-13 21:52:02 字數 2186 閱讀 4057

我的**:

如果在win建立的文字 拖到linux下面,會出現格式錯誤。cat -v a.txt 這個能顯示亂碼

解決辦法:yum -y install dos2unix 

dos2unix a.txt 

下面是別人的

在用fgets(..)讀入資料時,先定義乙個字元陣列或字元指標,如果定義了字元指標 ,那麼一定要初始化。

example:

char s[100]; //可以。

char *s;  //不可以,因為只是宣告了乙個指標。但並沒有為它分配記憶體緩衝區。

所以,如果要用指標,則  char *s=(char *)malloc(100*sizeof(char)); 為其分配記憶體空間,c++中用char *s=new char [100];      如果為分配記憶體空間,編譯時不會檢查出問題,但執行時會出現未知錯誤。。

fgets(...)讀入文字行時的兩種情況。

1.如果n大於一行的字串長度,那麼當讀到字串末尾的換行符時,fgets(..)會返回。並且在s的最後插入字串結束標誌'\0'。 而s緩衝區剩餘的位置不會再填充。

example:

123abc

fgets(s,10,fp);

此時,讀入七個字元,123abc\n,實際上還有最後的'\0',所以,strlen(s)=7; 如果要去除末尾的\n,s[strlen(s)-1]='\0';便可。

2.如果n小於等於一行的字串的長度,那麼讀入n-1個字元,此時並沒有讀入\n因為並沒有到行尾 ,同樣在最後會插入'\0'.

example:

123abc

char  s[5];

fgets(s,5,fp);

這時讀入4個字元,123a,並沒有換行符,所以strlen(s)=4.

fgets(...)讀入整個檔案內容

通常用while()迴圈來使fges()讀入文字全部內容,並按行讀入。

[cpp] view plain copy

char s[1024];  

while((fgets(s,1024,fp))!=null)  

當然如果n小於每行的字元個數,也可以讀,只不過讀的次數要多。

假設一行為 : 123456789

[cpp] view plain copy

char s[2];  

int  num=0;  

while((fgets(s,2,fp))!=null)  

每次讀入乙個字元, 最後也會讀完一行,num=10,讀了十次,所以,fgets若沒遇到換行符,會接著從前一次的位置繼續讀入n-1個字元,只要是文字流沒關閉。

讀入空行的情況:

第一行   abcdef123

第二行                       

第三行  helloworld

其中第二行為空,fget(..)會把第二行也讀入,因為並未到檔案結尾。

有時我們並不需要空行,可以這樣做。

[cpp] view plain copy

while((fgets(s,n,fp))!=null)  

fgets(...)從標準裝置讀資料。

用fgets(...)還也讀入標準輸入裝置(一般為鍵盤)的資訊

原型  :  fgets(s,n,stdin);

假設在控制台下,我們可以用fgets(...)替代gets(),讀入鍵盤輸入的資訊,fgets()是安全的,因為不會像gets()有溢位的可能。。

比如 :輸入 abc

fgets(s,n,stdin)也會讀入n-1個字元。但是只是從stdin流讀入。。。

寫入:fputs(ver,fp);

fputc('\n',fp);

fputs(compile_time,fp);

fputc('\n',fp);

fclose(fp);/*關閉檔案*/

return 0;

讀取;fgets(version,str_max_len,fp);

if(version[strlen(version)-1] == '\n')

fgets(compile_time,str_max_len,fp);

if(compile_time[strlen(compile_time)-1] == '\n')

Linux按行讀取檔案

bin bash n 1while n cat readline wc l doarray cat readline sed n p awk echo array array2 cat readline sed n p awk echo array2 n 1 done 按行讀取檔案 定義變數接受檔名...

按行讀取檔案

const string strurlfilename testurl.txt ifstream fin strurlfilename.c str fstream binary if fin fin.eof string serverurl getline fin,serverurl info lo...

30 按行讀取

為此,這裡介紹一種按行讀取的方法 readline 它的執行方法 我們在設計讀取檔案的時候,一般是設計乙個迴圈,使他按行讀取 例子 檔名 啪.txt 內容 曾經滄海難為水,除卻巫山不是雲,海記憶體知己,天涯若比鄰,落霞與孤鶩齊飛,秋水共長天一色.開始讀取 1 開啟檔案 file open 啪.txt...