c 怎樣刪除檔案中的一行,c 怎樣刪除txt檔案中的一行? ?

時間 2022-02-10 20:15:16

1樓:桐荏通清雅

建立一個臨時檔案

從原始檔中讀出一行,並判斷是不是要刪除的行,如果不是,則將該行寫入臨時檔案,然後再讀下一行;如果是則直接讀下一行,……,直到把原始檔處理完

刪除原始檔

將臨時檔案改名

2樓:匿名使用者

將裡面的資訊都讀到結構體中 然後在結構體中刪除 然後 新建該檔案 寫入資訊

3樓:匿名使用者

將檔案讀出來,讀到cstring 中 找到第一個換行符'\n' 的位置 pos1和第二個換行符的位置pos2 將中間的字串截掉~ 怎麼截~ 自己去查cstring的api.. 在將獲得的新的字串 覆蓋到原來的檔案中~~ 當然這是對於檔案內容比較少的情況下~~ 比較大的檔案,你就得逐段讀取了

4樓:匿名使用者

1.檔案小的話,完整讀入記憶體,在記憶體中刪除,然後以寫方式清空原始檔案並覆蓋;

2.檔案大的話,先逐段讀取,確認要刪除的起止位置,然後將之後的內容分段讀出並覆蓋到前面,最後截去檔案多餘的長度;

3.如果磁碟足夠大,也可以從頭讀取原始檔案並轉存到一個快取檔案,遇到要刪除的地方則跳過不寫,所有內容都寫入快取檔案後,將快取檔案整個copy覆蓋原始檔案,刪除快取檔案.

c++沒有提供像編輯器那樣提供那麼簡單快捷的直接刪除方法,只能夠覆蓋寫過去.

5樓:匿名使用者

最簡單的就是用fgets一行一行讀出文字,你讀一行然後往另外一個檔案裡面寫一行,跳過你要刪除的行。這樣你新的檔案就沒有了要刪除的行,最後刪除舊檔案,把新檔案重新命名即可。

對於小檔案,乾淨點的方法是

1. 分配大於檔案長度的兩塊記憶體,取名緩衝區1和緩衝區2

2. 檔案全部讀入記憶體緩衝區1,關閉檔案,然後複製到緩衝區2,複製的時候跳過要刪除的內容

3. 然後重新以w方式開啟檔案,把緩衝區2的內容寫入檔案

4. 釋放兩個記憶體緩衝區

c執行庫相關的函式為fopen, fclose, fread, fwrite, 分配村內malloc,釋放記憶體free, 複製memcpy或者迴圈。

windows api為createfile, closehandle, readfile, writefile。分配記憶體heapalloc, 釋放記憶體heapfree。大記憶體可以直接用windows api virtualalloc和virtualfree,這兩個函式按頁64k分配記憶體,可以申請巨大記憶體。

6樓:匿名使用者

分清順序儲存與隨機儲存,你自己就知道怎麼做了

c++中如何刪除一個txt檔案?

7樓:匿名使用者

1.用remove函式

功 能: 刪除一個檔案

用 法: int remove( const char *filename);

標頭檔案:在visual c++ 6.0中可以用stdio.h返回值:如果刪除成功,remove返回0,否則返回eof(-1)。

2.例:

#include

int main()

1.txt在程式目錄下

8樓:鄔增嶽管嬋

1.檔案小的話,完整讀入記憶體,在記憶體中刪除,然後以寫方式清空原始檔案並覆蓋;

2.檔案大的話,先逐段讀取,確認要刪除的起止位置,然後將之後的內容分段讀出並覆蓋到前面,最後截去檔案多餘的長度;

3.如果磁碟足夠大,也可以從頭讀取原始檔案並轉存到一個快取檔案,遇到要刪除的地方則跳過不寫,所有內容都寫入快取檔案後,將快取檔案整個copy覆蓋原始檔案,刪除快取檔案.

c++沒有提供像編輯器那樣提供那麼簡單快捷的直接刪除方法,只能夠覆蓋寫過去.

9樓:

幫一樓補充api的,可以用deletefile刪除指定的檔案,看原型:

bool winapi deletefile(__in lpctstr lpfilename);

10樓:匿名使用者

可以用cstdio (stdio.h)

int remove ( const char * filename );

也可以呼叫系統 api

11樓:匿名使用者

system("del /f c:\\test.txt");

好好學習哈system命令

c++怎樣刪除txt檔案中的一行呢?

12樓:篤俠

建立一個臨時檔案

從原始檔中讀出一行,並判斷是不是要刪除的行,如果不是,則將該行寫入臨時檔案,然後再讀下一行;如果是則直接讀下一行,……,直到把原始檔處理完

刪除原始檔

將臨時檔案改名

13樓:淺倚深微

給個思路吧,也許會有更好的思路。一般的刪除操作都是1,先選中要刪除的那行

2,刪掉選中的行

3,所有在被刪行之下的行向「上」移動

例子#include

void main()

fclose(fp);

fclose(fpt);}

c++怎麼刪除txt檔案中的特定一行?其他行不變

14樓:匿名使用者

①開啟檔案

②讀出檔案(一行一行讀)

③找到該行

④輸出檔案(跳過要刪除的行)

15樓:sky的祈禱

樓上正解,檔案裡的資料是沒辦法在程式裡直接刪除的。樓上的是一種方法,但我覺得樓上應該是少了一個寫入新檔案了。否則僅僅讀的話,就算是跳過要刪的行,但也只是儲存在記憶體,資料沒有被寫出來,那輸出的檔案也是不變的。

還有一種方法是類似於樓上那種,先讀檔案,再找需要修改的行,把它寫成空白,再重輸出

c++修改或者刪除txt中內容的某一行

16樓:

這段**可以把你的檔案的第二行改寫了,你可以照貓畫虎。可續問。

#include "stdafx.h"

#include

void main(void)

檔案已事先保在存同目錄下a.txt中。

17樓:

下面是實現你輸入行數,刪除對應行

主要思想就是新開一個檔案,儲存除了你要刪除行的其它行的資料,再存回原檔案

再刪除這個中間新開的檔案,修改內容就簡單了#include

#include

#include

#include

#include

using namespace std;

void main()

outfile.close();

file.close();

ofstream outfile1("in.txt",ios::out|ios::trunc);

fstream file1("in2.txt");

while(!file1.eof())

outfile1.close();

file1.close();

system("del in2.txt");//刪除中間檔案}

18樓:空雪夢見

直接在檔案中改的

#include

#include

//每行19個字元,加上回車和換行

#define line_len (21)

void deleteline(handle hfile, int line)

//刪除最後一行

setfilepointer(hfile, line * line_len, 0, file_begin);

setendoffile(hfile);

}void overwriteline(handle hfile, int line, char* data)

int main()

//覆蓋第一行

overwriteline(hfile, 0, "9 9 x 9 99 99 88 77");

//刪除第三行

deleteline(hfile, 2);

//關閉檔案

closehandle(hfile);

}如果你的檔案換行只有一個換行符沒有回車符,那麼把line_len改為20

因為刪除的時候要修改檔案大小,我不知道標準庫中如何修改檔案大小,所以用api實現了

有風險,使用前請先備份好你那個txt……萬一改壞了(

c中dataGridView的一行刪除,資料庫資料如何自動排列

ilistselectobj this.fslgridview1.getselectedkeys string flagdel 0 if selectobj null else if flagdel 1 if flagdel 2 this.fslgridview1.databind gridview...

c中如何讀取文字檔案的最後一行

兩種方法 一行一行讀,讀到檔案尾,你就知道哪行是最好一行了。可以考慮使用system.io.file.readalllines 方法,返回值是字串陣列。file.readalllines 方法 system.io https 從流的末尾一個位元組一個位元組往前讀,讀到換行符以後,再從這個位置讀到檔案...

C盤中哪些檔案不能刪除,電腦C盤裡的資料夾刪除不了

磷火祈 c windows一般都不可以亂動 清理c盤方 可以將以下檔案刪除 1,c documents and settings 使用者名稱 local settings temp 下的所有檔案 使用者臨時檔案 可以刪 2,c documents and setting 使用者名稱 cookies ...