2017-10-22 6 views
-7

私はプログラミングには新しく、これは皆さんにはっきりとした答えがあるかもしれないので、私は本当に困惑しています。なぜ次の関数ではうまくいかないのですか?私はiostreamヘッダーをインクルードしていますので、関数内にあることと何か関係があると仮定していますか?coutは関数では印刷されません

int inputFileData(song musicLibrary[]) 
{ 
    char discard = ' '; 
    int counter = 0, length = 0; 
    ifstream inData; 

    inData.open("songs.txt"); 

    if (!inData) 
    { 

     cout << "Error: No input file found " << endl; 
     cout << "Program terminating..." << endl; 
     return 1; 
    } 

    while (!inData.eof()) 
    { 
     inData.getline(musicLibrary[counter].title, ARRAY_CONST, ';'); 
     inData.getline(musicLibrary[counter].artist, ARRAY_CONST, ';'); 
     inData >> musicLibrary[counter].durationMinutes; 
     inData.get(discard); 
     inData >> musicLibrary[counter].durationSeconds; 
     inData.get(discard); 
     inData.getline(musicLibrary[counter].album, ARRAY_CONST, '\n'); 

     length = strlen(musicLibrary[counter].album); 

     if (length = 0) 
     { 
      cout << length << endl; //This cout object doesn't work in this function 
      break; 
     } 

     else 
      counter++; 
    } 

    return counter; 
} 
+0

''(長さ= 0)場合に、各coutの前に付けることができます - '=='使用します。 – Eli

+1

必須の読み込み:[なぜループ状態の 'iostream :: eof'が間違っていると思われますか?](https://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-間違っている) – molbdnilo

+0

配列を使用せず、std :: vectorを使用してください。 char配列は使用しないでください。std :: stringを使用してください。 –

答えて

3

ラインif (length = 0)if (length == 0)でなければなりません。

1

エラボレーションイーライの答え:

if (length = 0) 

割り当て0lengthにしてからは、式を評価します。式が0を返すので、条件はfalseと評価され、if句は入力しません。

代わりに、標準の名前空間を使用せずに、あなたはCOUTを使用しているif (length == 0)

0

を使用しています。

は、あなたがメインの前に、次のステートメントを使用していることを確認します -

using namespace std; 

またはあなただけのstd::

関連する問題