• ベストアンサー

C言語---ファイルに出力したデータをすべて消去する方法

KojiSの回答

  • KojiS
  • ベストアンサー率46% (145/312)
回答No.5

MS-Cなら、_chsizeというのもあるようです。 ファイルサイズを変更する関数ですが、試していないので0バイトにすることが可能かどうかはわかりません。 > int _chsize(int handle, long size); ただし、ファイルハンドルが必要なので、 > int _fileno( FILE *stream ); でファイルハンドルを取得してください。 他のC処理系はどうかわかりません。

関連するQ&A

  • C言語のファイル出力について

    C言語のfprintfによるファイル出力について教えてください。 fprintfで、下記の例のように、上書きする行を指定することはできますでしょうか? 出力ファイルは.csv形式で、モードは問いません。 例:既に、sample.csvというファイルがあり、中身が、 0 0 0 1 1 1 2 2 2 とします。プログラムのfprintfで、3 3 3という出力を2行目に上書きし、 0 0 0 3 3 3 2 2 2 と変更する。 もし上記の方法をご存知でしたら、ご教授いただけましたら幸いです。 よろしくお願いいたします。

  • C言語について。

    C言語プログラマとしては、スタートアップコードは・・・ ・自分が書いたプログラムを、直接動かすために必要なライブラリ ・それはコンパイル後、リンカによって追加されるライブラリこれは、 どういう意味でしょうか?分かりやすく教えていただけると幸いです。すみません。で、 以下のかぶくんまんさんの回答です。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11247611941 で、 C言語におけるプログラミングとは「main関数を書くこと」に他ならない。なぜ「main関数を書く」ことがC言語におけるプログラミングに他ならないのかと言えば、それは偏に「C言語のコンパイラはmain関数を呼び出すプログラムを生成するから」です。それがmain関数を求めるので結果的にmain関数がリンクされ、そしてmain関数が求めるままに他の関数もリンクされていくわけです。 で、その「main関数を呼び出すプログラム」こそが、C言語における「スタートアップコード」。 という回答で、main関数以降は、プログラマが書くのですよね?プログラマが関数をリンクさせる様なプログラムを書くということでしょうか?教えていただけると幸いです。すみません。 という所が分かりません。教えていただけると幸いです。すみません。以下のURL https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12247932542

  • C言語で書き込んだファイルの重複行の削除と行の並び変えるプログラミング

    C言語で書き込んだファイルの重複行の削除と行の並び変えるプログラミング ファイル名が 0.txt というC言語で書き込んだテキストファイルがあり その中身は以下のようなものとします。 111 000 222 555 000 444 222 000 これらを行ごとに見て重複行を削除し 更に値の小さな順に並び変えたい、つまりファイル内を 000 111 222 444 555 となるようなプログラミングを考えているのですが 調べても分からず悩んでいます。 c言語のプログラム内に UNIXコマンドを扱う方法を考えているのですが c言語内でUNIXコマンドを併用するためのsystem()関数 や 重複行を削除する uniq というUNIXコマンドを どのようにプログラム内に挿入すればいいのでしょうか? ご回答、よろしくお願いいたします。 ちなみに以下のプログラムは system関数が理解できない私の作成失敗したものです。 #include <stdio.h> #include <stdlib.h> int main(void) { system("uniq 0.txt"); }

  • 標準出力とファイルに効率的に同じ出力をする方法

    C&C++でプログラムしています。 (以下は、できれば、Cの範囲内で行いたいと思います。) 結果の出力を画面とファイル両方に出力しています。 printf("A"); ... printf("Z"); fprintf(fp,"A"); ... fprintf(fp,"Z"); ただし、行数が多い場合には、ほとんど同じプログラムがだぶって書いてあり、画面用50行、ファイル出力用50行で、計100行とプログラム行数も長くなってしまいます。 サブルーチン化するなどの方法で、この2つのルーチンを短く記述することは、できないでしょうか? 例えば、 画面に出力する場合には、 fprintf(fp1,"***"); ファイルに出力する場合には、 fprintf(fp2,"***"); として、どちらに出力するかによってファイル指定子を変更できると良いのですが、可能でしょうか? よろしくお願い致します。

  • ファイルの消去ができません

    デスクトップ上に保管した「.avi」ファイルの消去ができません。 消去しようとすると『別のプログラムがこのファイルを開いているので、操作を完了できません・・・・』とメッセージが出てきます。PCを立ち上げた直後に消去しようとしてもこのメッセージが出ます。別のプログラムを実行しているようには思えないのですが・・・。裏で何かのプログラムが実行でもされているのでしょうか?もちろん移動もファイル名変更もできません。セーフモードにて消去を試みましたが、『リサイクル中・・・』のメッセージが出て、30分ほど続けましたが一向にこの処理が終わりそうもなかったのでキャンセルをしました。何とかこのファイルを削除したいので方法を教えてください。 OSはvistaです。よろしくお願いします。

  • Xcode3.2でC言語を書く方法

    プログラミング初心者です。 Xcode3.2でC言語の練習をしようと思い、新規プロジェクトから空のプロジェクトを選び、C言語の新規ファイルを作ってそこにコードを書いてみたのですが、「ビルドと実行」アイコンがアクティブにならず押せません。 どうすればコードを実行できるのでしょうか。 非常に初歩的な質問だと思いますがよろしくお願いします。

    • ベストアンサー
    • Mac
  • C言語 ファイルの出力

    こんにちは。 現在C言語学習中でファイルの出力でエラーが発生したのですが、どのようにエラーを起こしているのかわかりません。 ご指摘をお願いします。 #include<stdio.h> int main(void) { FILE *fp = NULL; fp = fopen("test1.txt", "w"); if(fp == NULL){ printf("ファイルをオープンでいませんでした。\n"); return -1; } else{ printf("ファイルをオープンしました。\n"); } fputs("Hello!\n", fp); fputs("Hello World!\n", fp); printf("ファイルに書き込みました。\n"); fclose(fp); printf("ファイルをクローズしました。\n"); int i; scanf("%d", &i); return 0; } エラーの内容は 1>LINK : fatal error LNK1104: ファイル 'C:\Users\拓哉\Documents\Visual Studio 2010\Projects\sample.c\Debug\sample.c.exe' を開くことができません です。現在使用中のC言語環境は上記の通り、Visual Studio 2010です。 学習仕立てで、あまりプログラミングについて知りません。 よろしければ、他に何か間違いがあればご指摘お願いします。

  • C言語でのプログラミングについて

    C言語でのプログラミングについて これまでJavaでよくプログラミングをしてきたのですが、最近Cもよく使っています。 しかしJavaに慣れすぎたのか、Cで大きなプログラムを作ろうとすると、どうすればいいのかよく分かりません。 HeaderファイルはJavaでいうと継承みたいなもので、複数のファイルに同じ機能を持たすときに使うのでしょうか? Javaではクラスがありそれぞれに役割がありますが、Cの場合はファイルごとに大まかな役割を分けるのでしょうか? (例えばユーザーからインプットを取ってくるファイルをgetInput.cで、それを処理するファイルをvefiryInput.cというようにするのでしょうか?) C言語でのプログラミングの仕方を教えてください。

  • C言語でのファイルのデータ更新について

    C言語初級者です。 1行単位でデータが書いてあるファイルで、指定した行のデータを書き換えるようなプログラムはどのように記述すればよいのでしょうか。 必要な関数、処理の仕方など教授していただければと思います。 処理系はCygwinを使っています。 ファイルには五千行程度のデータが書いてあります。

  • c言語についての質問なんですが、

    c言語についての質問なんですが、 memcpy memmove strstr strlen strcpy(strncpy) strcat strcmp 等の関数を使ったことがあるのですが、使うことができても中身の構造が良く分かっていません。 この関数を自分で作成する場合や、代用のプログラムを書くとどのようになるのでしょうか? よろしくお願いします。