[問題] 關於strcpy

看板C_and_CPP (C/C++)作者 (FreedomKnight)時間15年前 (2011/05/03 21:29), 編輯推噓4(4013)
留言17則, 6人參與, 最新討論串1/1
雖然說是要問strcpy 但是其實是想問裡面的東西啦 最近我在看約爾談軟體的時候呀 他說 while(*a++ = *b++); 這樣就可以了耶 請問這個到底是怎麼達成的呀 想了解其中的運作 大概猜碰到底會變NULL 然後就結束 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.57.123.65

05/03 21:35, , 1F
就跟你猜的一樣
05/03 21:35, 1F

05/03 21:45, , 2F
還有取值和遞增運算子的優先順序
05/03 21:45, 2F

05/03 21:53, , 3F
那電腦是先判斷等號後面碰底囉
05/03 21:53, 3F

05/03 22:00, , 4F

05/03 22:06, , 5F
感謝 我平時不會把++放在while的條件裡說 太酷了
05/03 22:06, 5F

05/03 22:07, , 6F
這樣寫雖然很帥,但為了軟體維護性,建議還是寫清楚一點..
05/03 22:07, 6F

05/03 22:07, , 7F
while ((*a++ = *b++) != '\0');
05/03 22:07, 7F

05/03 22:08, , 8F
你說對了,主要是想耍帥
05/03 22:08, 8F

05/03 22:18, , 9F
而且沒記錯的話,標準裡應該沒有規定 '\0' == 0 這件事?
05/03 22:18, 9F

05/03 22:24, , 10F
ascii '\0' == 0 啊...
05/03 22:24, 10F

05/03 22:58, , 11F
對喔XD 謝謝firejox
05/03 22:58, 11F

05/04 12:57, , 12F
cool! 不過為避免overflow while((*a++ = *b++)&&len--);
05/04 12:57, 12F

05/04 12:57, , 13F
可能會比較安全
05/04 12:57, 13F

05/06 23:26, , 14F
樓上你要怎麼得到len...
05/06 23:26, 14F

05/27 18:11, , 15F
掌握自己建立的每個buffer的長度是寫C必備的吧
05/27 18:11, 15F

05/27 18:13, , 16F
不然請問你怎麼用secure version的strcpy? :p
05/27 18:13, 16F

06/10 13:56, , 17F
oh len--要放在前面先check才完善
06/10 13:56, 17F
文章代碼(AID): #1Dm0DE3Y (C_and_CPP)
文章代碼(AID): #1Dm0DE3Y (C_and_CPP)