У меня проблема с доступом к памяти. Когда i = 0
, Visual Studio выдает исключение со ссылкой на строку, помеченную в следующем коде.Swap 2 char из массива C++
не удается получить доступ в 0x00AD8B3B
и 0x00AD8B3B
равен scr+np-i
Как я могу исправить тело для цикла, с тем, чтобы устранить эту проблему?
int o_strrev(char* scr)
{
int np = strlen(scr) - 1;
char tmp;
if (!scr) return -1;
if (!*scr) return -1;
for (int i = 0; i < np/2; i++)
{
tmp = scr[np-i];
scr[np-i] = scr[i]; # this line
scr[i] = tmp;
}
return 0;
}
Как вы называете эту функцию? Что вы передаете как параметр? –
Успокойтесь, чтобы передать эту константу в строку, такую как строковый литерал. –
И проверить (! Scr) до того, как будет вызываться stlen (scr) ... – prabindh