C言語の話です。
はじめ、ファイルを"w"モードで開き、
fprintfで繰り返してデータをファイルに書き込んで、
ある条件(何らかのエラーがおきた場合)には今まで書き込んだものは
すべて 消去します。
(つまり、ファイルを再び空にするという意味です。)
この場合、もうこれ以上ファイルに書き込むことはしないで、プログラムは終了します。
書き込んだものを消去するには、どのようにすればよいですか。
「一度ファイルを閉じて、再び"w"モードで開き、また閉じる」
というのが私が考えるいちばん簡単な方法なんですが、
ファイルの中身を消去するために開いたり閉じたりしなきゃいけないの?
という気もします。
本で見ると、freopenという関数が使えそうな気もしますが、
わたしはこの関数を使ったことがありませんし、
解説を読んでも、本当にこのような場合に使うものなのかな、
という感じがします。
そんなにプログラミングに詳しくないので、やさしくご回答いただけるとたすかります。
No.4ベストアンサー
- 回答日時:
その時点で開いているファイル(書き込み中のファイル)
のFile Descripterを閉じた後、
---
fclose(oldfp);
FILE *fp = fopen(filename, "w");
fclose(fp);
---
とするか、
---
freopen(filename, "w", oldfp);
---
の何れかを実行すれば、ファイルサイズ0
(中身が空)のファイルが作成されます。
やはり一旦閉じた後、モード "w" で
再度開きなおすのがセオリーでしょう。
>freopen(filename, "w", oldfp);
>---
>の何れかを実行すれば、ファイルサイズ0
>(中身が空)のファイルが作成されます。
freopenは使えるんですね。
>やはり一旦閉じた後、モード "w" で
>再度開きなおすのがセオリーでしょう。
やはりそうですか。ありがとうございました。
No.6
- 回答日時:
すみません、スペース(タブ?)が詰まってしまったようです。
>intunlink(const char *pathname);
int unlink(const char *pathname);
の間違いです。申し訳有りません。
No.5
- 回答日時:
MS-Cなら、_chsizeというのもあるようです。
ファイルサイズを変更する関数ですが、試していないので0バイトにすることが可能かどうかはわかりません。
> int _chsize(int handle, long size);
ただし、ファイルハンドルが必要なので、
> int _fileno( FILE *stream );
でファイルハンドルを取得してください。
他のC処理系はどうかわかりません。
No.2
- 回答日時:
UNIX なら ftruncate という、オープンされているファイルのサイ
ズを変更する(縮めるか0で埋めて拡大する)システムコールがあ
ります。Windows でもあるかもしれません。
ただし、ファイルを指定するには、FILE * のファイルポインタじゃ
なくて、int のファイルディスクリプタを指定しますので、
fprintf で出力している場合は fflush して、吐き出したことを保
証してから、fileno でファイルディスクリプタを調べて、
ftruncate してから閉じてください。
No.1
- 回答日時:
単に削除するには以下の関数があります。
#include <stdio.h>
int remove(const char *filename);
削除できたときは0を返す、出来なかったときは0以外を返す。
この回答への補足
早速のご回答ありがとうございます。
removeというのはファイルを削除する関数でしょうか。
この関数を使う前には、ファイルを閉じておかなければいけないんでしょうか。
本当は、
ファイル自体は残っていて、中身だけ空になってなおかつ閉じてくれるのがあるといいんですけど。
removeについて:
http://www.bohyoh.com/CandCPP/C/Library/remove.h …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ソフトウェア) 特定のpremiere proのファイルが開けなくなりました。 1 2022/11/16 12:31
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Windows 10 Windows10の回復環境 2 2023/02/03 19:13
- Excel(エクセル) Excelを開くとエラーが出る 2 2022/10/03 16:13
- CAD・DTP JWW-CADでDXF変換後の線が連動して消える 2 2023/01/13 11:09
- Excel(エクセル) エクセルのフッタやヘッダーについて 3 2023/02/04 09:45
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- その他(社会・学校・職場) 業務内容についてどう思いますか? 私は客先の仕事を下請けとして行うという仕事をしていますが、(客先の 2 2022/05/04 16:17
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
いけず言葉しりとり
はんなりと心にダメージを与える「いけず言葉」でしりとりをしましょう。 「あ」あら〜しゃれた服着てはりますな 遠くからでもわかりましたわ
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
ファイル内のデータを1行削除する方法
C言語・C++・C#
-
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
ファイル書込みで一行もしくは部分的に上書きする
PHP
-
-
4
【C言語】テキストファイル内のデータを一行削除
C言語・C++・C#
-
5
C言語 exitの使い方
C言語・C++・C#
-
6
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
7
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
8
数字以外が入力されたらエラー文を出したい。
C言語・C++・C#
-
9
C言語を用いたファイルの一括削除について
C言語・C++・C#
-
10
c言語のポインタへの文字列入力についてです。
C言語・C++・C#
-
11
関数から配列を返すには?
C言語・C++・C#
-
12
バッファとは何ですか
C言語・C++・C#
-
13
改行を読み飛ばす
C言語・C++・C#
-
14
ファイル出力の場所を指定
C言語・C++・C#
-
15
テキストファイルの文字列の削除
C言語・C++・C#
-
16
char*を初期化したいのですが
C言語・C++・C#
-
17
fcloseで発生するエラーについて。
C言語・C++・C#
-
18
変数名の付け方
Java
-
19
C++ でファイルを消す関数(??)
C言語・C++・C#
-
20
コマンド(例えばls)の出力結果を文字列で取得するプログラムの作成方法
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
公文書のxmlファイルの開き方が...
-
コマンドプロンプトで作成日時...
-
リンクの張り付けかたを教えて...
-
C言語---ファイルに出力したデ...
-
.NETアプリを作ったときの .man...
-
アクセス 壊れた? 「ファイ...
-
#include <Windows.h>というヘ...
-
CSSファイルの日本語コメントが...
-
参照するファイルをワイルドカ...
-
jarファイル
-
実行ファイル(.exeファイル)...
-
Seasar2のdiconファイルの読み方
-
自分で作成した重要ファイルを...
-
binファイルを解凍したいの...
-
CRCが一致する確率
-
監視ツールを入れさせられまし...
-
ファイルが開かれているかどう...
-
C#でログファイルにファイルパ...
-
Latexで図番号だけを「図1.1」...
-
warファイルをEclipseでプロジ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
binファイルを解凍したいの...
-
コマンドプロンプトで作成日時...
-
アクセス 壊れた? 「ファイ...
-
.NETアプリを作ったときの .man...
-
#include <Windows.h>というヘ...
-
公文書のxmlファイルの開き方が...
-
Latexで図番号だけを「図1.1」...
-
jarファイル
-
Seasar2のdiconファイルの読み方
-
自分で作成した重要ファイルを...
-
C言語---ファイルに出力したデ...
-
コマンドプロンプトで、指定し...
-
ファイルが開かれているかどう...
-
exeファイルの中身を見る方法は...
-
リンクの張り付けかたを教えて...
-
VBAでのicsファイル変換
-
「ブルーファイル」と「グリー...
-
HTMLからのBATファイル実行
-
VBSが起動しない
-
CSSを1ページに1枚作るのって変...
おすすめ情報