尝试将文件读入char数组

时间:2013-04-24 18:33:05

标签: c++ arrays char

我正在尝试将文件中的所有字符读入数组。假设声明了所有变量,为什么所有字符都没有被读入我的数组。当我输出“storeCharacters []”数组中的一些字符时,返回垃圾。请帮忙。

这是我的功能:

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

3 个答案:

答案 0 :(得分:2)

在while循环之后尝试添加storeCharacters[i] = '\0'以使null终止字符串。

答案 1 :(得分: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?

答案 2 :(得分: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;
}