Yeah, I know to avoid casting but I dont see another way.

To Ancient: say i have "this is a test" stored in an array, is there a way to turn that into a char* for function returing purposes. Thanks.

[LIST=1]
			do
			{
				if(ReadFile(myReadCom, &myReadByte, 1, &bytesRead, NULL))
				{
					//strncat_s(myIncomingMessage, sizeof(myIncomingMessage), (const char*)myReadByte, 1);
					//cout << "Byte Read. Process it." << endl;
					incomingMessage.myIncomingMessage[index] = myReadByte;
					index++;
				}
				else
					cout << "Read message error." << endl;
			}
			while(bytesRead);
			
			incomingMessage.myIncomingMessage[index-1] = NULL;
			myIncomingMessage = reinterpret_cast<char*>(incomingMessage.myIncomingMessage);[/LIST]

This is the part I need help with. The entire module compiles and when I step through it works until I cout the message. Its jibberish. Thanks.

What is incomingMessage.myIncomingMessage, an array of char?
What is myIncomingMessage?

incomingMessage.myIncomingMessage[index-1] = NULL;

Don't use NULL where you mean '\0' -- and aren't you putting it in the wrong place?

>>myIncomingMessage = reinterpret_cast<char*>
you can not return a character array from a function when it has been declared on the stack . The below is wrong because the array will disappear when the function returns, and typcasting will not help that.

char* foo()
{
    char myIncomingMessage[255];

    return myIncomingMessage; // <<<< WRONG
}

There are a couple work-arounds.

1) declare the array as static

char* foo()
{
    [b]static[/b] char myIncomingMessage[255];

    return myIncomingMessage; // <<<< OK
}

or dynamically allocate the array

char* foo()
{
    char *myIncomingMessage = new char[255];

    return myIncomingMessage; // <<<< OK
}
Comments
Replied timely, and solved my problem

I appreciate it guys. Ill work on it some more and post if I have anymore questions. Thanks.

This question has already been answered. Start a new discussion instead.