Can anyone fix my code especially in the updateRecord function because instead of updating,data remains the same.

int newRecord( FILE *fPtr )
{ 
   /* create clientData with default information */
   struct clientData client = { 0, "", "", 0.0 };

   int accountNum; /* account number */

   /* obtain number of account to create */
   printf( "Enter new loan number ( 1 - 100 ): " );
   scanf( "%d", &accountNum );

   /* move file pointer to correct record in file */
   fseek( fPtr, ( accountNum - 1 ) * sizeof( struct clientData ), SEEK_SET );

   /* read record from file */
   fread( &client, sizeof( struct clientData ), 1, fPtr );

   /* display error if account already exists */
   if ( client.acctNum != 0 ) {
      printf( "Loan #%d already contains information.\n",client.acctNum );
   } /* end if */
   else { /* create record */

      /* user enters last name, first name and balance */
    
      printf( "  Enter lastname, firstname, balance\n" );
      scanf("%s%s%lf", &client.lastName, &client.firstName, &client.balance );

      client.acctNum = accountNum;
      
      /* move file pointer to correct record in file */
      fseek( fPtr, ( client.acctNum - 1 ) * sizeof( struct clientData ), SEEK_SET );

      /* insert record in file */
      fwrite( &client, sizeof( struct clientData ), 1, fPtr );
   } /* end else */

} /* end function newRecord */

/* enable user to input menu choice */


int updateRecord( FILE *fPtr )
{ 
   int account,choice,cli,accountNum;
   char c[15],cl[15];        /* account number */
   double transaction; /* transaction amount */

   /* create clientData with no information */
   struct clientData client = {0,"", "", 0.0 };

   /* obtain number of account to update */
   printf( "Enter Loan No. to update ( 1 - 100 ): " );
   scanf( "%d", &account );

   /* move file pointer to correct record in file */
   fseek( fPtr, ( account - 1 ) * sizeof( struct clientData ), SEEK_SET );

   /* read record from file */
   fread( &client, sizeof( struct clientData ), 1, fPtr );

   /* display error if account does not exist */
   if ( client.acctNum == 0 ) {
      printf( "Loan #%d has no information.\n", account );
   } /* end if */
   else 
        { /* update record */
        printf( "\t\t%-6d   %-16s   %-11s   %10.2f\n\n", 
        client.acctNum, client.lastName, 
        client.firstName, client.balance );
    
 fseek( lfPtr, ( accountNum - 1 ) * sizeof( struct clientData ), SEEK_SET );

   /* read record from file */
   fread( &client, sizeof( struct clientData ), 1, lfPtr );
    
  /* user enters last name, first name and balance */
      printf( "  Enter lastname, firstname, balance\n" );
      scanf("%s%s%lf", &client.lastName, &client.firstName, &client.balance );

      client.acctNum = accountNum;
      
      /* move file pointer to correct record in file */
      fseek( lfPtr, ( client.acctNum - 1 ) * sizeof( struct clientData ), SEEK_SET );

      /* insert record in file */
      fwrite( &client, sizeof( struct clientData ), 1, lfPtr );
    /* end else */

}

Your code appears to be correct -- how was the FILE pointer opened?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.