2011-12-20 21 views
1

私はC言語を学習していますが、名前を変更してファイルを削除しようとしています。これは私のコードです:ファイルの削除と名前の変更

fclose(satis); 
    if(!remove("satis.txt")) 
     printf("file deleting error\n"); 
    fclose(gecicisatis);   
    if(!rename("gecicisatis.txt", "satis.txt")) 
     printf("file rename error\n"); 

これは私の.cppファイルのヘッダーです:

#include<stdio.h> 
#include<locale.h> 
#include<string.h> 
#include<windows.h> 
#include<conio.h> 

デバッグ中にエラーがありません。しかし、それは出力されます:

file deleting error 
file rename error 

あなたは、これは私の全体のコードである必要がある場合:http://pastebin.com/kNY0y2xz(162へのライン157)

これが私たちの宿題ですので、私はtxtファイルを使用する必要があります。私はを解決しなければなりません。この問題を解決するために手伝ってもらえますか?

+1

'perror':' perror( "ファイル削除エラー"); 'と' perror( "ファイル名変更エラー"); ' – pmg

+0

あなたが修正しようとしているファイルへのパスとは何ですか?そのファイルを変更するための適切な権限を持っていますか?私はあなたが ''を含んでいることに気付きます。これはあなたがWindowsを実行していることを意味します。 Vista以降では、UACはハード・ディスクのルート・レベルでファイルを変更できないようにしています。これは、テスト目的のための良好なスクラッチ・スペースのように思えるかもしれません。 –

+0

perrorの出力は空白です。それは何も印刷されていません。 – Eray

答えて

0

ファイルが削除された場合、または名前がに変更された場合、ゼロ値が返されます。

if(remove("satis.txt") != 0) 
    printf("File deleting error\n"); 

if(rename("gecicisatis.txt", "satis.txt") != 0) 
    printf("File rename error\n"); 
+0

しかし、それはファイルを削除することはできません – Eray

+0

私はそこにまだフォルダとファイルをチェックしています。削除されません。 – Eray

0

remove戻り、成功した0


あなたはあなたに小切手を変更する必要があります。だから、ifであなたの状態を逆にする必要があります。

if(remove("satis.txt")) 
    perror("File deletion failed\n"); 

と同じ機能renameの場合である:あなたがエラー条件が発生した時はいつでもまた、エラーの原因を印刷する関数perrorをコールすることをお薦めします。

パス名ではなくファイル名のみを提供しているため、実行可能ファイルが起動されたディレクトリ(プロセスのpwdが変更されていないことを前提としています)にファイルが存在することが前提です。これが当てはまらない場合は、パス名を相対パスか絶対パスのいずれかに渡す必要があります。

+0

私はそこにまだフォルダとファイルをチェックしています。削除/名前変更されていません – Eray

+0

ファイルが他のプロセスによって開かれていないことを確認してください。 – codaddict

+0

開かれていません。 – Eray

関連する問題