2016-10-21 8 views
0

は、私は、テキストファイルから値をスキャンする必要がある場合にはブール式でスキャンした文字を使用して:C、テキストファイルからの読み込みとelse文

Dは、当座預金口座に入金に等しく、Cは等しい
D 5000 
C 200 

引き出しを行い、各取引後に口座に残高を表示する。私の変数transactionTypeは、文字の値を正しく取りますが、if/elseステートメントを使用して、必要な計算式を計算して勘定残高を計算すると、機能しません。 if/`else文を正しく使うにはどうすればいいですか? ASCII値として67を使ってみました。私は撤退のために 'C'を試みました。

は、ここに私のコードです:

#include <stdio.h> 

int main(void) { 
    char transactionType; 
    double transactionAmt; 
    double accountBalance = 0.0; 
    FILE *fpIn, *fpOut; 

    fpIn = fopen("transactions.txt", "r"); 

    if (fpIn == NULL) 
    { 
      printf("Input file is having issues while opening"); 
    } 

    fpOut = fopen("processed.txt", "w"); 

    if (fpOut == NULL) 
    { 
      printf("Output file is having issues while opening"); 
    } 

    printf("Welcome to Russell's Checking Account Balance Program\n"); 
    printf("-----------------------------------------------------------------------------------------------------------------------------\n"); 

    fscanf(fpIn, "%c %lf\n", &transactionType, &transactionAmt); 

    printf("The Transaction is a: %c and the amount is: %lf\n", transactionType, transactionAmt); 

    if (transactionType = 'C') { 

      accountBalance = accountBalance - transactionAmt; 
    } 

    else { 
      accountBalance = accountBalance + transactionAmt; 


    } 

    printf("The Balance in your checking account is: %lf\n", accountBalance); 


    fclose(fpIn); 
    fclose(fpOut); 

    system("pause"); 
    return 0; 
} 
+1

あなたの問題は、あなただけの比較ではなく、あなたの 'if'で代入があることです。これは、等号テストに '='が使用されている他の言語を使用している人にとってはよくある問題です。以前はどの言語でもプログラムしていない初心者には見過ごしがちです。 –

答えて

1

間違ったオペレータ:

if (transactionType = 'C') { 

は 'C' にトランザクション・タイプを割り当て、常にtrueを返します。

if (transactionType == 'C') { 

トランザクションタイプが 'C'であるかどうかをテストします。

ああ、あなたはこの問題はありませんが、それは

ので、「C」(文字列)「C」(文字)と同じものではないことを繰り返し強調価値が:-)よくある間違い
foo == "C" 

特に有用ではありません(代わりにstrncmp()などを使用してください)。

+0

ありがとう、ありがとう!それがそれでした。 –

関連する問題