2013-08-27 64 views
-1

我有一個程序,旨在從2個獨立的文本文件中獲取數據,將它們放在數組中,將它們相互比較,並輸出特定結果。但是,當我從文件中讀取數據並嘗試顯示數據時,在最終顯示文本文件中的所有數據之前,我會遇到許多奇怪的符號。這是代碼。從文件讀取數據時奇怪的符號?

// Ch07-Exam Grader.cpp : Defines the entry point for the console application. 
// 

//Libraries 
#include "stdafx.h" 
#include <iostream> 
#include <fstream> 
#include <iomanip> 
#include <string> 

using namespace std; 

//Prototypes 
void initialization(void); 
void proccess(void); 
void eoj(void); 
void writeIt(void); 
void readIt(void); 
void calculate(void); 

//Global Variables 
ifstream student; 
ifstream correct; 


int main() 
{ 
initialization(); 

return 0; 
} 

//This function opens the files and calls the function to send the data into the array 
void initialization (void){ 
correct.open("CorrectAnswers.txt"); 
readIt(); 

student.open("StudentAnswers.txt"); 
readIt(); 

} 
void proccess (char c[], char s[], int length){ 

int correctCount = 0; 
int incorrectCount = 0; 

for (int i = 0; i< length; i++){ 
    if (s[i] == c[i]){ 
     correctCount = correctCount + 1; 
    } else { 
     incorrectCount = incorrectCount + 1; 
    } 
} 

} 
void eoj (void){ 

} 
void writeIt (void){ 

} 

//This function will take the data and place it into seperate arrays 
void readIt (void){ 
char studentArray[20]; //Array to hold the student answers 
char correctArray[20]; //Array to hold the correct answers 

//Loops to place data to seperate arrays 
for (int i = 0; !correct.eof(); i++){ 
    correct >> correctArray[i]; 
} 
for (int j = 0; !student.eof(); j++){ 
    student >> studentArray[j]; 
} 
    for (int i = 0; i < 20; i++){ 
    cout << studentArray[i] <<endl; 
} 
proccess(correctArray, studentArray, 20); 

} 
void calculate (void){ 

} 

這是結果:

weird output

只有字母是文本文件的一部分。

+0

顯示至少一部分輸入文件....並請編譯所有警告並學習使用調試器。 –

+1

'readIt()'從'correct'和'student'中讀取,但是在打開'student'之前調用它。 – Barmar

+0

多麼簡單的錯誤。非常感謝您的幫助。我已經修好了。 – tserran

回答

0

爲什麼在初始化函數中調用readIt()兩次?它看起來像readIt()期望這兩個文件都打開,但你打開第一個文件,調用readIt(),打開第二個文件,再次調用readIt()。可能是這個缺陷問題的原因?

+0

就是這樣。我已經修好了。非常感謝 – tserran

相關問題