我在C中重命名和删除函数时遇到了困难

时间:2014-04-15 21:15:06

标签: c file delete-file file-rename

我最近开始在 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();
}

1 个答案:

答案 0 :(得分:0)

尝试这样,所以printf不要再次调用重命名以尝试调用不存在的文件。

   int returnvalue = rename("temp.txt","baza.txt");
      printf("%d",returnvalue);
      getch();