Я выполнял задание для своего класса C в школе, и я ударил немного.Необработанное исключение: нарушение доступа к чтению
#include <stdio.h>
char stringToUpper(char * sName)
{
while(*sName != '\0')
{
stringToUpper (* sName);
++* sName;
}
}
int main()
{
char str[50];
char * sName;
printf("Please enter your name ");
scanf("%s", str);
printf("Hello %s ", str);
sName = str;
stringToUpper(sName);
printf("Name in uppercase: %s ", sName);
}
Я пытался искать другие решения уже, однако я обнаружил, что все остальные проблемы были намного более продвинутыми, чем уровень я на самом деле и просто не мог следовать за ним. Я все еще немного разбираюсь в работе с указателями и все еще немного смущен тем, как они работают (всего несколько недель в классе), поэтому я чувствую, что проблема связана с этим. Я почти уверен, что проблема имеет какое-то отношение к заявлению while.
Это ошибка, я получаю:
Необработанное исключение брошено: чтение нарушение прав доступа.
sName был 0x41.
Если есть обработчик для этого исключения, программа может быть безопасно продолжена.
Спасибо за помощь, которую я получаю.
Похоже, вы переполнением буфера 50 байт (что вы входя?). Также '++ * sName;' увеличивает байт, на который указывает 'sName', а не указатель, как вы ожидаете. –
Что должен делать' stringToUpper'? –
'++ * sName;' возможно, вы имели в виду '++ sName;' –