我有一個結構:如何將字符串(字符*)轉換爲大寫或小寫用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