Mam prosty program i dostaję naruszenie dostępu pod adresem *(str + start)
. Czemu? Powinienem móc to zmienić. Dobrze?Jak rozwiązać problem z błędem lokalizacji zapisu?
void fn()
{
char *str = "Hello wordl!";
int end = strlen(str);
int start = 0;
end--;
while(start < end)
{
*(str + start) = *(str + end); <--- Access violation writing location *(str + Start).
end--;
start++;
}
}
Twoja sugestia byłaby identyczna z aktualnym kodem. –
char str [] versus char * str powoduje, że łańcuch jest modyfikowalny. – Michael
Oto kilka odnośników do tego: http://www.iso-9899.info/wiki/StringsByEypropiele https://www.securecoding.cert.org/confluence/display/cplusplus/STR30-CPP.+Do + nie + próba + modyfikacja + ciąg + literały – Michael