[問題] 結構中的成員設定字串

看板C_and_CPP (C/C++)作者 (峰)時間16年前 (2010/01/23 21:07), 編輯推噓1(1011)
留言12則, 4人參與, 最新討論串1/2 (看更多)
遇到的問題: (題意請描述清楚) 例如我有個結構為 struct data { char name[10]; int math; }stu; 我想要將名字賦予初值,我使用 strcpy(stu.name,"Tony"); 是正確的,但是為何我不能使用像是 stu.name="Tony"; 呢? 如果這樣的話會導致編譯錯誤。 然後我發現,如果不要用設定(=)而是用等於(==)則可以順利編譯, 但是印出來的結果卻不是我想要的字串(Tony)。 所以想問問看除了使用 strcpy() 函數設定字串以外,有沒有其他的方法? (Dev C++, Windows Vista) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.178.209

01/23 21:09, , 1F
因為name是array當然不能直接給值
01/23 21:09, 1F

01/23 21:10, , 2F
你可以考慮用string 不要用char array
01/23 21:10, 2F

01/23 21:20, , 3F
不過如果是一般的宣告+設定初值,我可以用
01/23 21:20, 3F

01/23 21:20, , 4F
char name[10]="Tony"; 這樣的方法進行設定不是嗎?
01/23 21:20, 4F

01/23 21:21, , 5F
我不太懂用 string 的方式 @@"
01/23 21:21, 5F

01/23 21:21, , 6F
應該是說我不太懂這句話的意思...
01/23 21:21, 6F

01/23 21:24, , 7F
就跟你不能用 char name[10]; name = "Tony"; 是一樣的
01/23 21:24, 7F

01/23 21:25, , 8F
一樓說的是 c++ 裡面的 string 類別 可以代替 char *
01/23 21:25, 8F

01/23 21:27, , 9F
那為什麼用等於(==)以後卻可以順利編譯呢?
01/23 21:27, 9F

01/23 21:27, , 10F
(雖然結果錯誤。)
01/23 21:27, 10F

01/23 21:32, , 11F
stu.name=="Tony"; 就只是比較兩個記憶體位置是否相同
01/23 21:32, 11F

01/23 21:41, , 12F
很顯然的,原PO應該先回前面的章節再看一次...
01/23 21:41, 12F
文章代碼(AID): #1BMlI34o (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BMlI34o (C_and_CPP)