2016-12-09 3 views
2

J'ai travaillé sur un programme de groupe pour une classe de programmation système qui exécutera des fonctions que quelqu'un utiliserait dans une banque. Ces fonctions incluent l'ajout de clients bancaires, le solde de sortie d'un client, etc. Le problème réside dans l'ajout de la fonction client.Le programme C se compile dans xcode, mais exécute une boucle infinie dans le terminal

Cette fonction s'exécute dans une boucle infinie dans le terminal et Putty, mais quand je l'exécute comme un programme autonome dans XCode la boucle se ferme. Y a-t-il quelque chose qui ne va pas avec le programme que moi, les membres de mon groupe ET notre professeur négligeons?

#include <stdio.h> 
#include <string.h> 
#include "./bank.h" 

void add(FILE *fp) 
{ 
    int i=0; 
    char firstName[20]; 
    char lastName[20]; 
    float camount; 
    int prompt; 
    float samount; 
    float mamount; 
    fseek(fp,0,2); 
do 

{ 
    printf("\nEnter first name: "); 
    scanf("%s", firstName); 
    strcpy(bank[i].firstName, firstName); 

    printf("\nEnter last name: "); 
    scanf("%s",lastName); 
    strcpy(bank[i].lastName, lastName); 

    printf("\nEnter checking account balance: "); 
    scanf("%f", &camount); 
    bank[i].checking = camount; 

    printf("\nEnter savings account balance: "); 
    scanf("%f", &samount); 
    bank[i].savings = samount; 

    printf("\nEnter money market account balance: "); 
    scanf("%f", &mamount); 
    bank[i].moneyMarket = mamount; 

    fwrite(&bank[i],1, sizeof(struct BankInfo),fp); 
    i++; 

    printf("Enter 1 to enter another name and 0 to quit: "); 
    scanf("%d", &prompt); 
    printf("%d\n", prompt); 

    } while(prompt == 1); 

    fclose(fp); 
    return; 
} 

Capture d'écran de sortie une fois Makefile est exécuté: screenshot

Sidenote: Cette fonction n'écrire sur le fichier que nous passons ce qui est génial, mais nous avons encore besoin pour elle de sortir de la boucle.

EDIT: Code pour la fonction principale: #include #include #include #include "bank.h" #include "definitions.h"

int main() 
{ 
FILE *fp; 
int selection; 
fp=fopen("bankInfo.dat","ab+"); 

selection=menu(); 

while(selection !=6) 
{ 
switch(selection) 
{ 
    case 1: 
     add(fp); 
     break; 

     case 2: 
      // outputBalance(fp); 
      break; 
     case 3: 
      delete(fp); 
      break; 
     case 4: 
      update(fp); 
      break; 
    case 5: 
     // display(fp); 
      break; 
    case 6: 
      exit(0); 
      break; 
    default: 
      printf("Invalid selection\n"); 
      break; 
    } 
} 
fclose(fp); 
return 0; 
} 
+2

Est-il possible que quelque chose d'autre qui appelle la fonction d'ajout soit dans une boucle? –

+2

Veuillez indiquer le code dans lequel vous appelez cette fonction 'Add'. – Ari0nhh

+0

Je viens d'ajouter la fonction principale à ma question – mimiholli

Répondre

3

Vous assignez sélection juste une fois. Cela devrait résoudre votre problème:

while(true) 
{ 
selection=menu(); 
switch(selection) 
{ 
    case 1: 
     add(fp); 
     break; 

     case 2: 
      // outputBalance(fp); 
      break; 
     case 3: 
      delete(fp); 
      break; 
     case 4: 
      update(fp); 
      break; 
    case 5: 
     // display(fp); 
      break; 
    case 6: 
      fclose(fp); 
      exit(0); 
      break; 
    default: 
      printf("Invalid selection\n"); 
      break; 
    } 
} 
return 0; 
+0

Merci! Cela nous a rendu fou toute la journée! Nous avons demandé à trois professeurs différents et aucun d'eux n'a pu le comprendre. – mimiholli

+0

@ Vous avez raison bien sûr. En fait, il n'est pas nécessaire de vérifier la valeur de sélection dans la condition de boucle. – Ari0nhh