[C++]konwersja char na char[]

Witam.

Jak rozwiązać taki problem:

char wartosc[] = *strcat(SciezkaInstalacji,"\\INT.EXE");

RegSetValueExA(hParent,"Ocos",0,REG_SZ,(LPBYTE)wartosc,sizeof(wartosc));

błąd:

error C2440: 'initializing' : cannot convert from 'char' to 'char []'

A nie lepiej użyć stringów ?

Powyższy kod jest niepoprawny, wydaje mi się, że z paru powodów.

Po pierwsze strcat ma wymagania dotyczące argumentów: http://www.cplusplus.com/reference/clib … ng/strcat/

Nie jest tworzony nowy nowy ciąg znaków, pierwszy argument musi być odpowiednio duży, to raz.

Ponadto taka inicjalizacja tablicy jest niemożliwa, wydaje mi się, że rozmiar tego co jest prawej stronie znaku przypisania musi być znany podczas kompilacji.

No i mając zmienną typu char* i używając unarnego operatora * uzyskujesz coś typu char, czyli pojedynczy znak (stąd komunikat).

Możliwe, że nie do końca zrozumiałem. Ale teraz nie mogę pobrać zmiennej środowiskowej z getenv:

char * wartosc[100];

char * progfls[100];

progfls = getenv("ProgramFiles");

wartosc = strcpy(progfls,"\\int.EXE");

RegSetValueExA(hParent,"Os",0,REG_SZ,(LPBYTE)wartosc,sizeof(wartosc));

Błąd:

cannot convert from 'char *' to 'char *[100]'

Bo zrobiłeś wskaźnik na tablicę, a nie tablicę.

Jeśli nie wychodzi Ci zbyt dobrze posługiwanie się napisami w stylu C, może faktycznie użyj klasy std::string, która upraszcza wiele operacji?

Ok. Już sobie poradziłem. Poprawiłem to co napisał nr47. Dzięki