• 締切済み

同じ名前のファイルを作った場合に上書きしてしまうのですが、どうすれば上書きしないで保存できるのでしょうか?

ランダム関数で数字を表示し、それをファイルに保存し、そのファイルの名を好きな文字で決めるというプログラムを作ったのですが、 一回目にランダム関数で数字を保存して、Aという名前のファイルに入れた後、二回目に同じ作業をして同じファイル名にしたら上書きされて、一回目とは違うランダムな数字が表示されてしまいました。 もうこの名前のファイルは存在します、という意味の部分を入れなければならないと思うのですが、どういった肯定を取り入れればファイルが存在していることがわかるのでしょうか?

みんなの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★アドバイス >同じ名前のファイルを作った場合に上書きしてしまうのですが、どうすれば上書きしないで保存できるのでしょうか? ・書き込むファイルの有無を調査することで防げます。  単純な方法では、fopen を使って読み込みでオープンできなければ、ファイルが存在している  可能性が高いです。でも、もっと安全にするには、ファイルを検索する関数などを使って検索  出来なければ(見つからなければ)存在しないと判定します。 ・C関数の標準では便利な関数がなかなかありませんので、Win32 API などを使うとファイルの  有無をチェックできます。→Windows OS の場合はね。 ・PathFileExists() API 関数で有無をチェックできます。  使い方は    if ( PathFileExists(filename) ){   /* ファイルは既に存在します */  }  else{   /* ファイルが無いため、新規作成します */  }  こんな感じで使います。 ・なお、使うには #include <shlwapi.h> をインクルードして shlwapi.lib をインポートライブラリ  として追加する必要があります。分かりますか?意味。 ・OS やコンパイラの環境が全く分からないため、これ以上のアドバイスは出来ません。 ・以上。参考に!

参考URL:
http://nienie.com/~masapico/api_PathFileExists.html
  • DT200
  • ベストアンサー率38% (63/164)
回答No.3

環境が不明ですが... #include <unistd.h> int ret; /* ファイルが存在するか調べる */ ret = access( "A", F_OK ); if( ret == 0 ){ /* * ファイルが存在するときの処理 */ } else{ /* * ファイルは存在しない。新規のファイルを作成する。 */ }

noname#30727
noname#30727
回答No.2

ANo.1です。ファイルがロックされている場合はNULLを返す事があるので、その場合にはファイルが存在しない事にはならないですね。 正確に取得するには、OSと処理系を特定しないと難しそうです。

noname#30727
noname#30727
回答No.1

fopen("A", "r") がNULL以外を返したら"A"は存在します。 すぐにfcloseしてください。

関連するQ&A

  • 上書き保存ができません

    エクセル2000で作ったデータを3.5インチフロッピーに保存して、エクセルで開いて、上書き保存しようとしたら ファイルAにアクセスできません。次のいずれかの理由が考えられます。 ・ファイル名またはパス名が存在しない可能性があります。 ・開こうとしているファイルは、ほかのユーザーまたはプログラムによって開かれています。ほかのプログラムで開いている場合、ファイルを閉じた後、もう一度実行してください。 ・保存しようとしているファイルと同じ名前のファイルが、既に読みとり専用のファイルとして保存されています。別の名前で保存してみて下さい。 とでます。 フロッピーには、1つしかファイルを保存していません。 とりあえず、別の名前で保存したら、 ・ファイルを保存できません。この場所は書き込み禁止に設定されています。 とでました。 そんな設定はしてないんですけど・・・ 空き容量もいっぱい空いているし。 どうしたらいいんでしょうか?教えて下さい。

  • 助けて下さい 誤って上書き保存してしまいました

    業務中、エクセルのファイル名を誤って上書き保存してしまいました 本当は、上書き保存してはいけないファイルの名前で保存してしまいました 復旧方法を教えて下さい 「そのファイル名で保存して」と言われて上書き保存したエクセルデータは書き換えてはいけないファイルだったんです 2~3時間してから「アカンかったんよ~」と言われ青くなってます 助けて下さい

  • エクセルの上書き保存が失敗する

    こんばんは。 Win98SEでExcel2000を使っています。 最近、エクセルを開くことが多いのですが、 エクセルの上書き保存をすると、3回に1回くらいの割合で保存に失敗し、テンポラリファイル(ファイル名が数字)?作成され、「新しく名前をつけて保存」のダイアロボックスが出ます。 とりあえず保存しなおせばちゃんと保存できているのですが、あまりにも頻繁なのでちょっとウザイ・・・。 これって何が問題で起こるのでしょうか? また、この症状は治りますか? アドバイスありましたらよろしくお願いします。

  • 同名のファイルと上書き保存について

    ファイル名の同じものがすでにメディアに存在するとき、保存すると、USBメモリーに関しては同名のファイルが上書き保存されてしまうの? また、外付けHDDやCDに関してはどうでしょうか?

  • 上書き保存しかできないようにできますでしょうか

    何度もすみません、こちらで質問させていただいた者です。 http://okwave.jp/qa3987988.html ブックを保存するときに、絶対にファイル名を変えられないようにできますでしょうか。 上書き保存はできるけれども、名前を変えて保存はできないようなイメージです。 ブックを上書き保存するSaveメソッドを使って保存してからファイルを閉じるような マクロを実行させる感じかとも思ったのですが、ファイルメニューから 「名前を変えて保存」もできないようにしたいのです。 そんなことはできますでしょうか。

  • Excelの上書き保存

    作成したExcelファイルをダブルクリックで開くと、 どのファイルも必ず「ファイル名1.xls」という名前で開きます。 上書き保存をしようとすると 「ファイル名をつけて保存」の画面が出てきてしまいます。 Excelを起動してから、ファイルを開くと 通常通り、上書き保存もできますし、 ファイル名の後ろに1がついたりもありません。 業務上、作成したファイルを上書き保存することが多いので、 ダブルクリックでファイルが開き、 編集後はすんなり上書き保存ができるようにしたいのです。 分かる方は、解決策を教えてください! ファイルを開くときに名前が書き換わってしまうなんて事、 あるのでしょうか??

  • ネットワーク上で共有されているExcelファイルを上書き保存できません

    主題の操作をしますと下記エラーが表示され上書き保存できません。 ・ファイル名またはパスが存在しません。 ・ファイルが他のプログラムによって使用されています。 ・保存しようとしているブックと同じ名前のブックが現在開かれています。 Excelのバージョンは、2003でビルド番号11.8033.8028のSP2です。 http://support.microsoft.com/default.aspx?scid=kb;ja;820748 上記の方法を試しましたが改善しませんでした。 情報提供よろしくお願いします。

  • ソースの上書きができません。

    ソースの上書きができません。 ソースをメモ帳で開いて上書きしたところ反映されず、開いたソースのファイル名にも[1]や[2]とランダムについていたりします(同じ名前のファイルは存在していないんですが)。 原因は一体なんでしょうか? 御存じの方、よろしくお願いします。

  • WSHでExcelファイルを上書きし、上書き保存するには

    質問させてください。 WSHをしようしてExcelファイルの中を編集し、その後同じファイル名で上書き保存するスクリプトを 作成したいと考えています。 最後に「上書き保存しますか??」というポップアップを出さずに ファイルを保存するスクリプトを知っていらっしゃる方 教えていただけないでしょうか。 現在保存はできるのですが ポップアップで「上書き保存しますか??」と表示されてしまいます。 お手数をお掛けいたします。 宜しくお願い致します。

  • 添付ファイルを編集して上書き保存したのに

    OSはWindowsMeで、OutlookExpressを使っています。 メールで送られてきた添付ファイル(エクセルの書類)を、 いろいろと編集してから上書き保存して閉じました。 途中でフリーズすると困るので 何度も上書き保存しながら作業していたにも関わらず、 もう一度そのファイルを開くと、 送られてきたときの状態のままなのですが。。。 「名前をつけて保存」してから編集すればよかったのでしょうが、 そのままやってしまっていたので、ダメだったのでしょうか。 添付ファイルは上書き保存ができないのですか? かなりの量の編集をしたので、あきらめるのが辛いのです。 どなたか、 復活する方法や、作業途中のファイルが保存されている場所など 分かれば教えて下さい。お願いします。

専門家に質問してみよう