如果我单独使用此代码(使用主函数),它可以工作。为什么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