這是我的代碼。我是如何工作但strcpy不是
int main()
{
struct emp
{
char *n;
int age;
};
struct emp e1 = {"Dravid", 23};
struct emp e2 = e1;
strupr(e2.n);
printf("%s\n", e1.n);
return 0;
}
問題1:根據網站的答案是'DRAVID'是大寫。怎麼樣,e2和e1是一樣的嗎?即如果我這樣做,e2.age ++那麼這個改變是否也會反映在e1中呢?
問題2:如果我將strupr更改爲strcpy,我得到seg故障?爲什麼?即如果我將其更改爲strcpy(e2.n,"hoho");
。
如果將strupr更改爲strcpy,則應該得到編譯錯誤,因爲strcpy需要2個參數,而不是1. – sashoalm
此外,調用'strupr()'也是UB,它還會嘗試修改字符串就地。 – 2012-10-24 18:21:58