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



我最近开始在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("nnnn");
        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%15sn",s.id,s.nume,s.prenume,s.suma);
    }
    fclose(f);
    fclose(g);
  }
  rename("temp.txt","baza.txt");
  getch();
}

尝试这样做,这样printf就不会再次调用rename来尝试调用不存在的文件。

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

我2分钟前也遇到了同样的问题。当ı意识到ı在重命名后试图删除文件时,我的问题就解决了。我认为程序不会更改名称,因为该名称已经被使用了。当ı第一次删除旧文件,然后重命名它时,它起作用了。

相关内容

  • 没有找到相关文章

最新更新