2013-05-15 65 views
0

我對這個程序幾乎感到沮喪。我有一個包含100條記錄的文件,但是,我的輸出不會超過17,包括標題。誰能告訴我我做錯了什麼?C++讀取二維數組中的文件

#include "stdafx.h" 
#include <iostream> 
#include <fstream> 

using namespace std; 

char medRecord[100][8]; 
int header, person; 

int main() 
{ 

    ifstream in("fakedata.txt"); 
    if(!in){ 
     cout << "Cannot open file. \n"; 
     return 1; 
    } 

in.read((char *) &medRecord, sizeof medRecord); 

for(person = 0; person < 100; person++) 
    for(header = 0; header < 8; header++) 
cout << medRecord[person][header] << ""; 

return 0; 

} 

輸出:

Number,Gender,GivenName,Surname,Birthday,BloodType,Pounds,FeetInches 
1,male,Joseph,Doody,1/10/1968,A-,179.5,5' 7" 
2,male,Robert,King,8/17/1985,A+,203.1,5' 10" 
3,male,Richard,Murphy,3/18/1944,O+,235.6,6' 1" 
4,female,Caroline,Acosta,5/27/1959,B+,145.4,5' 8" 
5,male,John,Capps,12/18/1967,O+,186.6,5' 9" 
6,female,Stephanie,Guidry,3/25/1981,O+,177.8,5' 6" 
7,female,Janet,Kimmel,2/23/1977,A+,161.3,5' 7" 
8,male,Jerrell,Wright,8/4/1929,B+,140.6,5' 9" 
9,female,Cheryl,Johnson,12/8/1972,A+,128.7,5' 1" 
10,female,Sandra,Gonzalez,6/1/1974,A+,171.4,5' 9" 
11,male,Kevin,Noel,9/30/1939,O+,212.1,5' 6" 
12,female,Krysta,Booth,7/9/1940,O+,173.1,5' 3" 
13,male,Sam,Clark,7/5/1979,A+,162.4,5' 9" 
14,male,James,Graves,8/15/1959,A+,235.0,5' 8" 
15,male,Elton,Fink,6/30/1937,A+,198.4,5' 5" 
16,male,Robert,Daniels,10/14/1969,Press any key to continue . . . 
+1

輸出的代碼在哪裏? – 0x499602D2

+2

提示:您現在的輸出正好是800個字符,與您的代碼的某些部分奇怪地匹配。 – Nbr44

+0

所以我期待輸出完整的100行。我哪裏錯了? –

回答

4

medRecord數組包含800個字符。輸出的文本包含783個字符,一行(或更少)爲800行。因此,看不見的情況下,您可能正在嘗試將整個文件讀入medRecord,並且讀取或輸出在填滿時停止。

我通過剪切/粘貼到Open Office中進行計數 - 如果換行符沒有正確計數,那麼783 + 17 = 800,然後你就去了。

+0

用於調試代碼而不會看到代碼。這就像禪宗編程 – greedybuddha

+0

@greedybuddha Raymond Chen會稱之爲心理調試,正如'我的心靈力量告訴我那' – Patashu

+0

@Patashu,我喜歡它,當他這樣做。 – chris