Я пытался манипулировать элементами строки "Hello World!" нашел в основной функции. Моя цель состоит в том, чтобы заглавные буквы "Hello World!" внутри функции «заглавные буквы», но это не позволяет мне. Я попытался вернуть строку, не манипулируя никакими ее элементами, и она работала нормально, но как только я включил часть кода, которая преобразует символ в нижнем регистре в символ в верхнем регистре, появляется ошибка времени выполнения, говорящая «Поток 1: EXC_BAD_ACCESS (code = 2, address = 0x100000fa9). Что не позволяет мне манипулировать массивом символов и что я должен сделать для его исправления?
char *capitalize(char *str)
{
int i;
for(i = 0; i < 4; i++)
if(str[i] >= 'a' && str[i] <= 'z')
str[i] -= 32; //I receive an error hear saying
//Thread 1: EXC_BAD_ACCESS (code=2, address=0x100000fa9)
return str;
}
int main()
{
char string[40];
printf("\n%s\n", strcpy(string, capitalize("abcd")));
return 0;
}
Для справки, я включил SPECIFI C ПРОБЛЕМА В УЧЕБНИКЕ:
Задача 3.4. Реализовать char * Capitalize (char * str), который будет использовать строчные буквы в строке. Функции возвращает указатель на первый байт измененной строки. Например, вызов функции strcpy (string, Capitalize («Hello World!»)); скопирует «HELLO WORLD!» в качестве значения переменной строки.