我有一个结构:如何将字符串(字符*)转换为大写或小写用C
typedef struct entry {
char *surname;
int house_no;
char *postcode;
} BEntry;
和功能将字符串转换为大写:
void toUpper(char *str){
while (*str != '\0')
{
*str = toupper(*str);
str++;
}
}
,并在我的主要功能I值分配到结构成员,并希望姓转换为大写:
mentry->surname = "bob";
mentry->house_no = 17;
mentry->postcode = "GK116BY";
toUpper(me->surname);
什么是CONVER的正确方法通过将字符型指针传递给像这样的函数来将字符串转换为大写字母?我的程序正在返回一个分段错误。非常感谢任何帮助,谢谢。
有什么不对的,你有什么? – 2014-11-06 18:41:17
'“bob”'是只读位置中的字符串文字。你不能修改它。复制并修改它。 – Mahesh 2014-11-06 18:41:49
问题是把''bob' - 一个常量字符串 - 赋值给'char *'类型的'surname'。你至少应该得到一个警告,你忽略了赋值中的const'ness 。总是使用完整的警告。解决这个问题的一种方法是通过运行'char * strdup(const char s)'作为赋值的一部分,然后获得可以修改的'char *'。不要忘记释放内存当你通过时。 – 2014-11-06 18:43:06