Мне нужно изменить приложение телефонной книги на C. Пожалуйста, покажите мне путь. Спасибо [closed]

Надеюсь, я делаю это правильно, я новичок в C, и мне сложно понять, как изменить запись. Я делаю приложение телефонной книги, которое будет писать и записывать в текст. файл. Я закончил кодирование, но не могу изменить контакт. Пожалуйста, направь меня или покажи мне дорогу. Спасибо. Обновление ** Есть еще какая-то проблема, например, по какой-то причине в addentry он не может обнаружить второй оператор if else после того, как я обновил новый код **

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct Phonebook_Contacts
   {
      char FirstName[20];
      char LastName[20];
      char PhoneNumber[20];
      char ID[20];
      char Department[20]
   } phone;


void AddEntry(phone * );
void DeleteEntry(phone * );
void PrintEntry(phone * );
void SearchID(phone * );
void EditAnEntry(phone * );
void ID(phone * );
void Department(phone * );
void DeleteAll(phone * );
void FreeContacts (phone * );

int count= 0;
int counter = 0;
char FileName[256];
FILE *pRead;
FILE *pWrite;


int main (void)
   {
      phone *phonebook;
      phonebook = (phone*) malloc(sizeof(phone)*100);
      int iSelection = 0;


         if (phonebook == NULL)
         {

         printf("Out of Memory. The program will now exit");
         return 1;
         }
         else {}

      do
      {
         printf("tt**********WELCOME TO TELEPHONE DIRECTORY CONTACT*************");
         printf("nnt(1)tAdd New");
         printf("nt(2)tDelete Per Person ");
         printf("nt(3)tDisplay Phonebook Entries");
         printf("nt(4)tSearch for ID");
         printf("nt(5)tModify a contact");
         printf("nt(6)tDelete All Entries");
         printf("nt(7)tExit Phonebook");
         printf("nnWhat would you like to do? ");
         scanf("%d", &iSelection);


         if (iSelection == 1)
         {
            AddEntry(phonebook);
         }



         if (iSelection == 2)
         {
            DeleteEntry(phonebook);
         }


         if (iSelection == 3)
         {
            PrintEntry(phonebook);
         }



         if (iSelection == 4)
         {
            SearchID(phonebook);
         }


         if (iSelection == 5)
         {
            EditAnEntry(phonebook);
         }


         if (iSelection == 6)
         {
            DeleteAll(phonebook);
         }


         if (iSelection == 7)
         {
            printf("nYou have chosen to exit the Phonebook.n");
            system("pause");
            FreeContacts(phonebook);
            return 0;
         }
      } while (iSelection <= 9);
   }


void AddEntry (phone * phonebook)
{
    int x;
    int count= 0;
    char SearchName[30];
    FILE *f,*ptr;
    f= fopen("Phonebook_Contacts.txt", "r");
    if ( f == NULL )
   {perror("The following error occurred ");
      exit(EXIT_FAILURE);}
      else{
         fscanf(f, "%i", &count);
         for(x = 0; x < count; x++){
         counter++;
         fscanf(f, "%s %s %s %s", phonebook[x].FirstName, phonebook[x].LastName, phonebook[x].PhoneNumber,phonebook[x].ID, phonebook[x].Department);}
         fclose(f);
         ptr = fopen("NewFile.txt", "w");
        {if ( ptr == NULL );{
             printf("nFile Not Found");}
        else

         printf("nFirst Name: ");
         scanf("%s", phonebook[counter-1].FirstName);
         printf("Last Name: ");
         scanf("%s", phonebook[counter-1].LastName);
         printf("Phone Number (XXX-XXX-XXXX): ");
         scanf("%s", phonebook[counter-1].PhoneNumber);
         printf("ID: ");
         scanf("%s",phonebook[counter-1].ID);
         printf("Department");
         scanf("%s", phonebook[counter-1].Department);
         printf("ntUser successfully added to Phonebookn");

         fprintf(pWrite, "%st%st%st%st%sn", phonebook[counter-1].FirstName, phonebook[counter-1].LastName, phonebook[counter-1].PhoneNumber,phonebook[counter-1].ID, phonebook[counter-1].Department);
         fclose(pWrite);
    }
    }
      fclose(ptr);
remove("Phonebook_Contacts.txt");
rename("NewFile.txt","Phonebook_Contacts.txt");
}

void DeleteEntry (phone * phonebook)
{
   int x = 0;
   int i = 0;
   char deleteFirstName[20];  //
   char deleteLastName[20];

      printf("nFirst name: ");
      scanf("%s", deleteFirstName);
      printf("Last name: ");
      scanf("%s", deleteLastName);

      for (x = 0; x < counter; x++)
      {
         if (strcmp(deleteFirstName, phonebook[x].FirstName) == 0)
         {
            if (strcmp(deleteLastName, phonebook[x].LastName) == 0)
            {
                for ( i = x; i < counter - 1; i++ )
               {
                  strcpy(phonebook[i].FirstName, phonebook[i+1].FirstName);
                  strcpy(phonebook[i].LastName, phonebook[i+1].LastName);
                  strcpy(phonebook[i].PhoneNumber, phonebook[i+1].PhoneNumber);
                  strcpy(phonebook[i].ID, phonebook[i+1].ID);
                  strcpy(phonebook[i].Department, phonebook[i+1].Department);
               }
               printf("Record deleted from the phonebook.nn");
               --counter;
               return;

            }
         }
      }

   printf("That contact was not found, please try again.");
}

void PrintEntry (phone * phonebook)
{
   int x = 0;

   printf("nPhonebook Entries:nn ");
   pRead = fopen("Phonebook_Contacts.txt", "r");
   if ( pRead == NULL)
   {
      perror("The following error occurred: ");
      exit(EXIT_FAILURE);
   }
   else
   {
      for( x = 0; x < counter; x++)
      {
         printf("n(%d)n", x+1);
         printf("Name: %s %sn", phonebook[x].FirstName, phonebook[x].LastName);
         printf("Number: %sn", phonebook[x].PhoneNumber);
         printf("ID: %sn", phonebook[x].ID);
         printf("Department: %sn", phonebook[x].Department);
      }
      }

   }
   fclose(pRead);



void SortByFirstName (phone * phonebook)
{
   int i = 0;
   int x = 0;
   int swap;
   int TempCounter = counter;
   phone Temp;

   do
   {
      swap = 0;
      for(i = 1; i < TempCounter; i++)
      {

         if(strcmp(phonebook[i-1].FirstName, phonebook[i].FirstName) > 0)
         {
            Temp = phonebook[i];
            phonebook[i] = phonebook[i-1];
            phonebook[i-1] = Temp;

            strcpy(Temp.FirstName, phonebook[i].FirstName);
            strcpy(Temp.LastName, phonebook[i].LastName);
            strcpy(Temp.PhoneNumber, phonebook[i].PhoneNumber);
            strcpy(Temp.ID, phonebook[i].ID);
            strcpy(Temp.Department, phonebook[i].Department);
            swap = 1;
         }
      }
      TempCounter--;
   } while (swap);

   printf("nYour friends in Alphabetical Order by First Name:nn");
   for( x = 0; x < counter; x++ )
   {
      printf("n(%d)n", x+1);
      printf("Name: %s %sn", phonebook[x].FirstName, phonebook[x].LastName);
      printf("Number: %sn", phonebook[x].PhoneNumber);
      printf("ID: %sn", phonebook[x].ID);
      printf("Department: %sn", phonebook[x].Department);
   }
}


void SortByLastName (phone * phonebook)
   {
   int i = 0;
   int x = 0;
   int swap;
   int TempCounter = counter;
   phone Temp;

   do
   {
      swap = 0;
      for(i = 1; i < TempCounter; i++)
      {

         if(strcmp(phonebook[i-1].LastName, phonebook[i].LastName) > 0)
         {
            Temp = phonebook[i];
            phonebook[i] = phonebook[i-1];
            phonebook[i-1] = Temp;

            strcpy(Temp.FirstName, phonebook[i].FirstName);
            strcpy(Temp.LastName, phonebook[i].LastName);
            strcpy(Temp.PhoneNumber, phonebook[i].PhoneNumber);
            strcpy(Temp.ID, phonebook[i].ID);
            strcpy(Temp.Department, phonebook[i].Department);
            swap = 1;
         }
      }
      TempCounter--;
   } while (swap);

   printf("nYour friends in Alphabetical Order by First Name:nn");
   for( x = 0; x < counter; x++ )
   {
      printf("n(%d)n", x+1);
      printf("Name: %s %sn", phonebook[x].FirstName, phonebook[x].LastName);
      printf("Number: %sn", phonebook[x].PhoneNumber);
      printf("ID: %sn", phonebook[x].ID);
      printf("Department: %sn", phonebook[x].Department);
   }
}


void SearchID (phone * phonebook)
{
   int x = 0;
   char TempFirstName[20];
   char TempLastName[20];
   char TempPhoneNumber[20];

   printf("nPlease type the ID of the User you wish to find a number for.");
   printf("nnFirst Name: ");
   scanf("%s", TempFirstName);
   printf("Last Name: ");
   scanf("%s", TempLastName);
   printf("PhoneNumber: ");
   scanf("%s", TempPhoneNumber);
   for (x = 0; x < counter; x++);
   {
      if (strcmp(TempFirstName, phonebook[x].FirstName) == 0)
      {
         if (strcmp(TempLastName, phonebook[x].LastName) == 0)
         {
             if (strcmp(TempPhoneNumber, phonebook[x].PhoneNumber) == 0)

            printf("n%s %s %s's ID is %sn", phonebook[x].FirstName, phonebook[x].LastName, phonebook[x].PhoneNumber, phonebook[x].ID, phonebook[x].Department);
         }
      }
   }
}


void EditAnEntry (phone * phonebook)
{
     int c;
     int x = 0;
     FILE *f;
     char  name[50];
     f = fopen("Phonebook_Contacts.txt", "r");
   if ( f == NULL )

   {
      perror("The following error occurred ");
      exit(EXIT_FAILURE);
   }
      else
      {
        counter++;
        fscanf(f, "%st%st%sn", phonebook[counter-1].FirstName, phonebook[counter-1].LastName, phonebook[counter-1].PhoneNumber, phonebook[x].ID, phonebook[x].Department);}
        printf("nEnter CONTACT'S NAME TO MODIFY:n");
        scanf("%s", name);
        for ( x = 0; x < counter; x++ )
            {
            if (strcmp(name, phonebook[counter-1].FirstName) == 0){

         printf("nFirst Name: ");
         scanf("%s", phonebook[counter-1].FirstName);
         printf("Last Name: ");
         scanf("%s", phonebook[counter-1].LastName);
         printf("Phone Number (XXX-XXX-XXXX): ");
         scanf("%s", phonebook[counter-1].PhoneNumber);
         printf("ID: ");
         scanf("%s",phonebook[counter-1].ID);
         printf("Department");
         scanf("%s", phonebook[counter-1].Department);
         printf("ntUser successfully added to Phonebookn");

         fprintf(pWrite, "%st%st%sn", phonebook[counter-1].FirstName, phonebook[counter-1].LastName, phonebook[counter-1].PhoneNumber, phonebook[counter-1].ID, phonebook[counter-1].Department);
         fclose(pWrite);
         printf("n Data is successfully modified");

            }
           else
            {
                    printf(" n data is not found");}
            {
            fclose(f);
            f=fopen("NewFile.txt","w");
            if ( f == NULL )
        printf("nFile Not Foundn");
    else{
    fprintf(f, "%i", counter);
    for(x = 0; x < counter; x++){
        fprintf(f, "n%st%st%st%s", phonebook[x].FirstName, phonebook[x].LastName, phonebook[x].PhoneNumber, phonebook[x].ID, phonebook[x].Department);}
        }
     remove("Phonebook_Contacts.txt");
     rename("NewFile.txt","Phonebook_Contacts.txt");
    main();
}



void DeleteAll(phone * phonebook);
{
   int x = 0;
   char nullStr[20] = {''};

   for ( x = 0; x < counter; x++ )
   {
      strcpy(phonebook[x].FirstName, nullStr);
      strcpy(phonebook[x].LastName, nullStr);
      strcpy(phonebook[x].PhoneNumber, nullStr);
      strcpy(phonebook[x].ID, nullStr);
      strcpy(phonebook[x].Department, nullStr);
      --counter;
      return 0;
   }

   printf("All Contacts have been deleted.n");
}
void FreeContacts (phone * phonebook)
{
     --counter;
     for ( ; counter > 0; --counter)
     {
        free(phonebook[counter].FirstName);
        free(phonebook[counter].LastName);
        free(phonebook[counter].PhoneNumber);
        free(phonebook[counter].ID);
        free(phonebook[counter].Department);
        free(phonebook);
        counter = 0;
        return 0;
     }

}
}
}

```

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *