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 ...