2013-04-24 99 views
0

我試圖將文件中的所有字符讀入數組。假設所有的變量都被聲明瞭,爲什麼所有的字符都沒有被讀入我的數組中。當我輸出「storeCharacters []」數組中的一些字符時,垃圾被返回。請幫忙。嘗試將文件讀入char數組

這是我的函數:

void countChars(ifstream& input, char storeCharacters[]) 
{ 
int i = 0; 
    while(!input.eof()) 
    { 
     input.get(storeCharacters[i]); 
     i++; 
    } 
} 
+1

你如何分配空間對於這些參數? – jrok 2013-04-24 18:34:59

+0

您可以通過使用'input.read'方法來消除該函數。 – 2013-04-24 19:50:17

+0

嘗試使用while(input.good()&&!input.eof())作爲eof不僅是指示流不可讀的屬性。然而,「假設所有變量都被聲明...」:-) – 2013-04-24 20:55:27

回答

2

while循環嘗試加入storeCharacters[i] = '\0'爲空終止字符串後。

+0

我不確定這是否做了什麼......我不知道如何爲角色分配空間。 – thomann061 2013-04-24 19:34:48

0

如果你知道文件的最大尺寸,那麼簡單的修復你的問題,然後設置你的陣列具有這個尺寸並用\0進行初始化。

假設文件中的最大字符數爲10000

#define DEFAULT_SIZE 10000 
char storeCharacters[DEFAULT_SIZE]; 
memset (storeCharacters,'\0',DEFAULT_SIZE) ; 

的後下應該是讀取文件的正確方法是使用它的內存分配,所有你需要知道什麼是緩衝區:

Correct way to read a text file into a buffer in C?

0
#include <iostream> 
#include <fstream> 
#include <iomanip> 
#include <string> 
#include <cstdlib> 


using namespace std; 


void getFileName(ifstream& input, ofstream& output) //gets filename 
{ 
string fileName; 

cout << "Enter the file name: "; 
cin >> fileName; 
input.open(fileName.c_str()); 
if(!input) 
    { 
     cout << "Incorrect File Path" << endl; 
     exit (0); 
    } 
output.open("c:\\users\\jacob\\desktop\\thomannProj3Results.txt"); 
} 

void countWords(ifstream& input) //counts words 
{ 
bool notTrue = false; 
string words; 
int i = 0; 

while(notTrue == false) 
{ 
    if(input >> words) 
    { 
     i++; 
    } 
    else if(!(input >> words)) 
     notTrue = true; 
} 
cout << "There are " << i << " words in the file." << endl; 
} 

void countChars(ifstream& input, char storeCharacters[], ofstream& output) // counts characters 
{ 
int i = 0; 

     while(input.good() && !input.eof()) 
     { 
       input.get(storeCharacters[i]); 
       i++; 
     } 
     output << storeCharacters[0]; 
} 

void sortChars() //sorts characters 
{ 
} 

void printCount() //prints characters 
{ 
} 

int main() 
{ 

ifstream input; 
ofstream output; 

char storeCharacters[1000] = {0}; 

getFileName(input, output); 
countWords(input); 
countChars(input, storeCharacters, output); 

return 0; 
} 
+0

確定它的東西簡單....爲什麼我不能將文件中的字符存儲到countChars函數下的storeCharacters []數組中? – thomann061 2013-04-26 00:17:04