I have a static variable declared in a file:
static char *msgToUser[] = {
"MSG1 ",
"MSG2 ",
};
Inside one of the methods of a class I’m doing this:
void InfoUser::ModifyMsg( BYTE msgIdx, char *msgString ){
strncpy( msgToUser[ idx ], msgString, DISPLAY_SIZE );
}
When I do the strncopy the program crashes. I’m not sure what I’m doing wrong
The array you have defined is an array of pointers to character strings; each character string is a literal (ie, a quoted string interpreted as a pointer) – this means it’s a constant, even if you didn’t declare it as such. You cannot modify string literals.
If you want to be able to modify them, you can use an explicit array allocation: