私はこのコードを単独で(主な機能を使って)使用すると動作します。rename()とremove()関数が機能しないのはなぜですか?
しかし、私は私のプロジェクトでは、この機能が含まれている場合、それは二つのファイル与える:
annuaire_client.txt
とannuaire1.txt
に使用されたコードは、以下の通りである:
void delete_client(){
FILE *annuaire_client,*annuaire1;
printf("\t\t\t\t\t\t\t\tNum de compte a supprimee: ");
int delete_line;
scanf("%d",&delete_line);
char ch;
int line = 1;
//ouvrir le fichier original
annuaire_client = fopen("annuaire_client.txt", "r");
ch = getc(annuaire_client);
//retour au debut
rewind(annuaire_client);
//ouvrir nouveau fichier
annuaire1 = fopen("annuaire1.txt", "w");
while (ch != EOF)
{
if (ch == '\n')
{
line++;
}
//sautez la line a supprimer
if (line != delete_line)
{
//copier les lines vers annuaire1.txt
fprintf(annuaire1,"%c",ch);
}
ch = getc(annuaire_client);
}
fclose(annuaire1);
fclose(annuaire_client);
remove("annuaire_client.txt");
rename("annuaire1.txt","annuaire_client.txt");
}
掲載のコードは、いくつかの重要な項目不足して使用することを忘れないでください!常に(チェック= NULL 1) 'の#include' 2) )操作が成功したことを保証するために 'fopen()'から返された値を返します。3)操作が成功したことを保証するために 'rename()'の返り値を常にチェック(== 0)します。 4)操作が成功したことを保証するために、常に 'remove()'の戻り値をチェック(== 0)します。システム関数が返す値が関数が失敗したことを示すときは、 'perror()'を呼び出して、囲まれたテキスト文字列を出力するようにしてください。+関数呼び出しが失敗した理由をOSが考えるエラーメッセージ。 –
user3629249