如果我單獨使用此代碼(使用主函數),它可以工作。爲什麼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");
}
張貼代碼缺少幾個關鍵項目:1)'的#include'2)經常檢查(= NULL )從'fopen()'返回的值確保操作成功3)始終檢查(== 0)從'rename()'返回的值以確保操作成功。 4)總是檢查(== 0)從remove()返回的值以確保操作成功。任何時候系統函數返回的值都表示函數失敗,調用:'perror()',因爲它會輸出任何附帶的文本字符串+操作系統認爲是函數調用失敗的錯誤信息。 –
user3629249