2017-10-22 6 views
-7

저는 프로그래밍에 익숙하지 않아서 여러분에게 확실한 답이있는 질문이 될 수 있습니다. 그리고 나는 정말 엉망입니다. 왜 다음 함수에서 cout이 작동하지 않습니까? 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- wrong) – 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::

관련 문제