У меня есть-структура:Как преобразовать строку (символ *) в верхний или нижний регистр в C
typedef struct entry {
char *surname;
int house_no;
char *postcode;
} BEntry;
и функция для преобразования строки в верхний регистр:
void toUpper(char *str){
while (*str != '\0')
{
*str = toupper(*str);
str++;
}
}
и в моя главная функция Поручает значение членов структуры и хочет преобразовать фамилию заглавных букв:
mentry->surname = "bob";
mentry->house_no = 17;
mentry->postcode = "GK116BY";
toUpper(me->surname);
Что такое правильный способ CONVER t строка в верхний регистр, передавая указатель символа на такую функцию? Моя программа возвращает ошибку сегментации. Любая помощь очень ценится, спасибо.
Что не так с тем, что у вас есть ? –
'' bob "' является строковым литералом, присутствующим в местоположении только для чтения. Вы не можете его изменить. Скопируйте и затем измените его. – Mahesh
Проблема заключается в присвоении '' bob' - постоянной строки - к 'surname', которая имеет тип' char * '. У вас должно быть хотя бы предупреждение, что вы игнорируете const'ness в задании Всегда используйте полные предупреждения. Один из способов его решения - запустить 'char * strdup (const char s)' как часть назначения. Затем вы получите 'char *', который вы можете изменить. Не забудьте освободить память когда вы закончите. –