我最近开始在 C 制作一个程序只是为了好玩,一个记住"银行帐户的程序"在文件中。
所以我做了一个"删除"可以删除某个"帐户的功能"由它的Id。这是它应该如何工作:我创建一个临时函数,然后我把所有"帐户"但不是具有所请求ID的那个。然后,我删除原始文件,然后使用原始文件的名称重命名临时文件。
它应该如何运作,但猜猜是什么,它不是。我的意思是该功能正常工作,只是重命名和删除功能不起作用,他们给出了" -1"消息。
我搜索过,我在Stack Overflow上发现了很多关于这个问题的问题,但是我找不到答案,这就是我做这个的原因。
该程序是罗马尼亚语,我只翻译了"删除"为你们的功能。 如果您还需要整个程序,请告诉我。
void delete()
{
FILE *f,*g;
struct date s;
int c=0;
char id[5],pass[10];
g=fopen("temp.txt","w");
if((f=fopen("baza.txt","r+"))==NULL){ /* checking the existence of the file */
printf("Error - File not found! \n");
getch();
return;
}
printf("\nEnter the desired Id whose account you want to delete: ");
scanf("%s",id);
while(fscanf(f,"%s%s%s%s%s",s.id,s.nume,s.prenume,s.suma,s.parola)!=EOF)
{
if(strcmp(s.id,id)==0)
{
do{
system("cls");
printf("\n\n\n\n");
if(c==0)
{
printf("Introduce the password for the account with ID %s: ", s.id);
scanf("%s",&pass);
}
else{
if(c==1)
{
printf("Wrong password, try again: ");
}
if(c>1&&c<6)
{
printf("Wrong password %d times!, try again: ",c);
}
if(c==6)
{
printf("Wrong password %d times, the program will shutdown! \n",c);
printf("Press any key to exit..\n");
getch();
exit(0);
}
scanf("%s",&pass);
}
c++;
}while(strcmp(s.parola,pass)!=0);
}
if(strcmp(s.id,id)!=0)
{
fprintf(g,"%10s%20s%25s%15s\n",s.id,s.nume,s.prenume,s.suma);
}
fclose(f);
fclose(g);
}
rename("temp.txt","baza.txt");
getch();
}
答案 0 :(得分:0)
尝试这样,所以printf不要再次调用重命名以尝试调用不存在的文件。
int returnvalue = rename("temp.txt","baza.txt");
printf("%d",returnvalue);
getch();