HighLife
HighLife

Reputation: 4344

Reading text from file to unsigned char array

I was looking to use OpenSSL to encrypt text in a file, and will need the text to be in an unsigned char array before I encrypt it. What is the easiest way read text from a file to an unsigned char array?

Upvotes: 5

Views: 5306

Answers (3)

Armen Tsirunyan
Armen Tsirunyan

Reputation: 132994

Your question is tagged both C and C++ (which isn't constructive). I will give an answer for C++.

#include <fstream>
#include <iterator>
#include <vector>

using namespace std;

int main()
{
    ifstream in("filename.txt"); //open file
    in >> noskipws;  //we don't want to skip spaces        
    //initialize a vector with a pair of istream_iterators
    vector<unsigned char> v((istream_iterator<unsigned char>(in)), 
                            (istream_iterator<unsigned char>()));
    ...
}

Upvotes: 9

Jens Gustedt
Jens Gustedt

Reputation: 78903

Read it in whatever data type of your liking. Cast to (unsigned char*) is guaranteed to give you access to the individual bytes.

Edit: This is an answer for C, and not C++. Originally the question was tagged C, too.

Upvotes: 3

Justin Ethier
Justin Ethier

Reputation: 134157

There must be a ton of examples online of how to do this. The only tricky part is that you will almost certainly need to dynamically allocate memory for the array in order to guarantee that you do not read more input than can fit in the array. Also, you will need to do more research if you need to process large files (say, several GB or larger) that will not fit into a single array of bytes.

Upvotes: 1

Related Questions