Question

My current code looks like this (looks good on the eye but doesn't compile).

char FileConfPath[256];
char *pos;

GetModuleFileNameA(0, FileConfPath, 256);
pos= strrchr(FileConfPath, '\\');
if ( pos )
  strcat(FileConfPath[1], "file.conf");
else
  strcat(FileConfPath, "file.conf");

Generates 2 compiler errors.

error #2140: Type error in argument 1 to 'strcat'; expected 'char * restrict' but found 'char'.

Must I do

strcat(&FileConfPath[1], "file.conf");

doesn't look right to use addresses here.

Seems the error is for FileConfPath[1] only not for the one without the index specifier.

Was it helpful?

Solution

This is the correct way of placing "file.conf" after the initial character:

strcat(&FileConfPath[1], "file.conf");

FileConfPath[1] is the character at index one; &FileConfPath[1] is the address of the character at index one, which is what you want to pass to strcat.

Note that if you want to place "file.conf" after the slash, you want to use the address of the character after the slash, i.e.

strcpy(pos+1, "file.conf");

It goes without saying that pos+11 (one for the slash plus one for null terminator plus nine for the characters of "file.conf") needs to be less than or equal to &FileConfPath[255] to avoid buffer overrun.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top