我有一个结构体:
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);
如何正确将字符串转换为大写字母并通过传递指向字符的指针到函数中?我的程序返回了一个段错误。非常感谢任何帮助,谢谢。
char*
的surname
赋值为常量字符串"bob"
。你至少应该得到一个警告,表明你忽略了赋值中的常量性。始终使用完整的警告。解决这个问题的一种方法是在赋值的一部分中运行char * strdup(const char s)
。然后你会得到一个可以修改的char *
。别忘了在完成后释放内存。 - Dov Grobgeld