C語言逐行讀取檔案

2021-05-23 11:26:20 字數 1248 閱讀 8766

c語言可以說是我學習的第一門語言,不過似乎也是忘的最多的一門語言,自從因為專案需要重新拾起c語言,我的噩夢就開始了。

依稀記得大二學習資料結構時程式設計解決「約瑟夫環」、「迷宮」等問題後的驕傲,認為c簡直就是天神一般的語言,如此強大,如此讓人著迷。後來學了c++,後來開始搞.net,後來自學了css和簡要的php,當c快被我拋棄的時候,由於種種原因,被分到乙個新的專案,重新開始做c程式設計。

繼語法樹構造完之後自我放假了好久,這兩天開工寫了一段檔案處理的**,發現以前學習的c語言知識確實完全還給老師了,小崔,我對不起你啊,下面是遭遇問題小結。

1. 字元型轉化為整型

如果不是正好用到,我想我永遠不會知道居然還有標準庫函式可以將字串轉換為任意型別(整型、長整型、浮點型等),我太無知了,我居然只知道強制型別轉換,卻從來沒想過對於字串要怎樣處理,不過還好有人跟我一樣不知道,哼哼。

atof():將字串轉換為雙精度浮點型值;

atoi():將字串轉換為整型值;

atol():將字串轉換為長整型值;

strtod():將字串轉換為雙精度浮點型值,並報告不能被轉換的所有剩餘數字;

strtol():將字串轉換為長整值,並報告不能被轉換的所有剩餘數字;

strtoul():將字串轉換為無符號長整型值,並報告不能被轉換的所有剩餘數字。

用法非常簡單,舉例說明如下:

執行結果如下:

cherry@ubuntu:~$ gcc test.c -o test

cherry@ubuntu:~$ ./test

lineno_str : 123

lineno_int : 123

2. 在檔案指定行的末尾新增資訊

找到某一行還是很容易的,但是在檔案中進行插入比較麻煩,本來以為找到指定行直接在末尾新增就可以了,結果悲劇的發現後面的東西被替換了,惆悵。google了下發現檔案的內容在緩衝區中是按位元組順序操作的,所以修改檔案內容是順序操作,在某位置修改時會把原始存放在該位置的內容給替換掉,而不是在檔案的當前位置插入你修改的內容。

無奈只好走了一條曲折的路線,逐行讀取原檔案,如不是待修改行則直接拷貝到新建的乙個臨時檔案,如是待修改行則進行修改後再拷貝過去,然後將原來的檔案刪除,將臨時檔案重新命名為原來的檔案。由於要修改好幾行,來來回回反反覆覆還真是麻煩,誰有更好的方法記得告訴我啊。

由於這段**比較長,就不貼出來了佔篇幅了,只附一段逐行讀取檔案的吧,雖然這塊是從網上找來然後修改的,嘿嘿。

(2023年8月31日)

C語言逐行讀取檔案內容(實驗七)

原型 char fgets char s,int n,file stream 引數 s 字元型指標,指向儲存讀入資料的緩衝區的位址。n 從流中讀入n 1個字元 stream 指向讀取的流。返回值 1.當n 0 時返回null,即空指標。2.當n 1 時,返回空串 3.如果讀入成功,則返回緩衝區的位址...

linux shell 逐行讀取檔案行

while ifs n for line in ls l do count done echo count注意 for讀取時,自動按空格作為間隔符。因此需要將ifs定義為按換行符分隔 ls l forout.log maxlength wc l forout.log for i in seq max...

Shell指令碼逐行讀取檔案

方法1 while迴圈中執行效率最高,最常用的方法。while read line doecho line done filename 注釋 這種方式在結束的時候需要執行檔案,就好像是執行完的時候再把檔案讀進去一樣。方法2 管道法 cat filename while read line cat f...