2014-06-24 3 views
0

문제는 배열의 인덱싱 된 점에 값을 저장할 수 없다는 것입니다. 2D 배열을 인쇄하려고하면 올바른 형식으로 인쇄되지만 텍스트 파일의 문자 대신 미친 숫자가 표시됩니다. 이것은 필자가 배열을 채우는 제 기능이 제대로 작동하지 않는다고 믿게하지만, 문제가 어디에 있는지 진단하는 데 어려움을 겪고 있습니다..txt 파일에서 정수를 읽고 2 차원 배열에 저장하려고합니다.

여기에 배열을 채우는 기능이 있습니다.

void fill2dArray(int array[][4], int size, int& numberUsed) 
{ 
ifstream recordsFile; 
int index1, index2; 

recordsFile.open("data11.txt"); 

while ((index1 < size) && (!recordsFile.eof())) 
{ 
    for (index1 = 0; index1 < size; index1 = index1 + 1) 
     for(index2 = 0; index2 < 4; index2 = index2 + 1) 
      recordsFile >> array[index1][index2]; 

} 
numberUsed = index1; 
recordsFile.close(); 
} 

다음은 배열을 인쇄하는 제 기능입니다. 여기

void print2dArray(const int array[][4], int numberUsed) 
{ 
int index1, index2; 

for (index1 = 0; index1 < numberUsed; index1 = index1 + 1) 
{ 
    for (index2 = 0; index2 < 4; index2 = index2 + 1) 
     cout << array[index1][index2] << " "; 

    cout << endl; 
} 
} 

여기
const int NOP = 25; //Max number of players in the records file 

void fill2dArray(int array[][4], int size, int& numberUsed); 
void print2dArray(const int array[][4], int numberUsed); 

메인

int main() 
{ 
int records[NOP][4], numberUsed; 

fill2dArray(records, NOP, numberUsed); 

print2dArray(records, numberUsed); 


return 0; 
} 

그리고 (프로그램과 같은 폴더에 저장되어있는) 텍스트 파일

1 2 1 1 
2 3 2 3 
3 2 3 1 
4 0 3 4 
5 2 1 3 
6 5 2 5 
7 2 4 2 
8 4 1 0 
9 0 2 3 
10 1 4 3 
11 2 3 1 
12 3 5 6 
13 2 3 5 
14 2 1 0 
15 2 1 4 
16 7 3 5 
17 9 3 2 
18 6 2 1 
19 3 2 0 
20 1 0 0 
21 0 0 0 
22 1 2 5 
23 2 4 2 
24 6 2 7 
25 6 2 4 
인 전역/원형 인
+0

일반적인 디버거 사용 사례입니다. –

+0

그것에 대해 자세히 설명해 주시겠습니까? – Victor

+0

또한 'while ((index1

답변

1

01 시부 터이면 index1을 정의하지만 값을 지정하지 않으므로 정의되지 않았으므로 size보다 작거나 size보다 작을 수 있습니다.

처음에는 0에서 index1까지 변수를 지정하기 만하면됩니다.

+0

이 시도했지만 여전히 초기화되지 않은 값을 출력. 필자는 배열에 수동으로 값을 입력하는 위치로 함수를 다시 작성했으며 제대로 인쇄됩니다. 그게 내가 테스트하는 데 사용하고있는 텍스트 파일에 문제가 있다고 생각하게한다. 파일은 프로그램과 함께 설치된 데스크톱 외부의 폴더에 있습니다. .txt 파일 자체 내에서 이상한 점이 있는지 알아볼 것입니다. – Victor

+0

@Victor 코드를 실행 한 결과 나에게 효과적 이었으므로 뭔가 새로운 것을 발견하면 더 많은 것을 물어보십시오. – prajmus

+0

문제를 발견했습니다. 텍스트 파일의 이름은 data11.txt ...입니다. 프로그램에서 data11.txt.txt로 읽었을 것입니다. 한숨 .. 도움 모두 주셔서 감사합니다! – Victor

관련 문제