2016-12-09 11 views
2

私は、銀行の誰かが使用する機能を実行するシステムプログラミングクラスのグループプログラムに取り組んでいます。これらの機能には、銀行顧客の追加、顧客の出力バランスなどが含まれます。問題は、顧客の追加機能にあります。Cプログラムはxcodeでコンパイルされますが、端末内で無限ループを実行します

この関数は、ターミナルとパテの無限ループで実行されますが、XCodeでスタンドアロンプ​​ログラムとして実行すると、ループは終了します。私と私のグループメンバーと私たちの教授が見落としているプログラムに何か問題はありますか?

#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; 
} 

のMakefile一度出力のスクリーンショットが実行されます。 screenshot

追記:この機能は、我々は偉大である渡しているが、それはループから抜け出すためにのために、我々はまだ必要なファイルへの書き込みんが。

EDIT:主な機能についてコード: の#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

追加機能を呼び出す何かがループ内にある可能性はありますか? –

+2

この 'Add '関数を呼び出すコードを表示してください。 – Ari0nhh

+0

私の質問にmain関数を追加しました – mimiholli

答えて

3

の#includeあなたは選択を割り当てます1回だけ。これで問題が解決するはずです:

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

ありがとう!これは一日中私たちを夢中にさせてくれました!私たちは3人の教授に尋ねましたが、誰もそれを理解できませんでした。 – mimiholli

+0

@あなたはもちろんそうです。実際には、ループ状態で選択値をチェックする必要はありません。 – Ari0nhh

関連する問題