ファイルの最後の行を消去する – プログラミング – Home

ファイルの最後の行を消去する
 
通知
すべてクリア

[解決済] ファイルの最後の行を消去する


kzs
 kzs
(@kzs)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

ファイルの最終行を消去したいのですが、
やり方がわかりません。
おしえてください


引用未解決
トピックタグ
kzs
 kzs
(@kzs)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

このepptr()関数は利用できますか?


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

一度全て読み込んで、最後の行以外の内容を
上書きするのはどうでしょうか?

【以下処理例】
元のファイル(ファイルAとする)をオープン
一時ファイル(ファイルBとする)をオープン

下記の作業をファイルAの終わりまで繰り返す
・ファイルAを一行ずつ読み込む(1)
・最後の行でない場合、(1)の内容をファイルBに書き込む

ファイルBをクローズ
ファイルAをクローズ

ファイルAを削除
ファイルBの名前をファイルAの名前に変更


返信引用
kzs
 kzs
(@kzs)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

何故か上手くいきません。
何が原因かわかりません。

CString LogPath = C:\\test.txt

vector<char*> FileList;

char buff[512];
ifstream in(LogPath);

if(!in) return false;

CString strBuff;
while(!in.eof()){
//in.getline(buff, sizeof(buff));
in >> buff;
FileList.push_back(buff);
}
in.close();

//
gfLog.open( LogPath , ios::out );

if(!gfLog){
cout << error<< endl;
return false;
}

// ファイル書き出し
for(int i =0; i < FileList.size() -1; i++ ){//最後行を除くので総数に-1
を引く
gfLog << FileList[i];
}

// ログファイルを閉じる
gfLog.close();


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

FileListに同じポインタをぼこぼこ突っ込んでいるから問題が起きるのでは?
さらに,同じ場所に読み込んじゃっているし……。

char *なんか捨て去って,std::stringを使えば問題は無くなると思います。


返信引用
kzs
 kzs
(@kzs)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

YuOさん。
すみません。具体的にどこを直せばよいのでしょうか?
初心者なのでわかりません。

vector<std::string> FileList;
に直したら
in >> strBuff;
が利用できなくなりました。

お手数ですが教えてください


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

std::getlineを調べてみてください。

というか、MFCでかけるなら全てMFCで書いたほうがいいと思うだけど。

以下MFCで適当にやってみたから参考にしてください。
ちなみにあんまりテストしてないです。

CString strFileName( a.txt );

TRY
{
CStringArray astrText;
CString strLine;

CStdioFile fInStream( strFileName, CFile::modeRead | CFile::typeText );
while ( fInStream.ReadString( strLine ) )
{
astrText.Add( strLine );
}
fInStream.Close();

CStdioFile fOutStream( strFileName, CFile::modeWrite | CFile::modeCreate |
CFile::typeText );
for ( int n = 0; n < astrText.GetSize() - 1; n++ )
{
fOutStream.WriteString( astrText.GetAt( n ) + \n );
}
fOutStream.Close();
}
CATCH ( CFileException, e )
{
// エラー処理
}
END_CATCH


返信引用
kzs
 kzs
(@kzs)
ゲスト
結合: 20年前
投稿: 5
Topic starter  

Blue様
ありがとうございました。
無事に実行できました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました