[問題] C 使用pointer 傳array的問題

看板C_and_CPP作者 ( ~~)時間11年前 (2015/01/04 15:59), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) X-code 6.1.1 我是一個C 語言的自學新手,正在自修"C語言程式設計 -蔡文能" 這本書。 做到Exercise 5-3 的時候,遇到一點問題想請問一下大家 "請使用指標的觀念寫一個strcat(s, t)的函數,將字串t抄到字串s的尾端" 以下是我寫的程式碼, 基本上跟解答幾乎一模一樣, 但怎麼跑原始的那個字串(ori) 都不會改變,請問是出了什麼問題? 我在十三誡那邊看到一個 "不能用char* 改變字串常數" 是因為出在這個問題嗎? ==================================================================== #include <stdio.h> void strcat_user (char *, char *); int main(int argc, const char * argv[]) { char ori[30] = "hello, "; char add[] = "world."; strcat_user(ori, add); //strcat_user(&ori[0], &add[0]); printf("%s\n", ori); return 0; } void strcat_user (char *ori, char *add){ while (*ori++) ; while ((*ori++ = *add++)) ; } ========================================================== 如果是的話, 請問要怎麼改? 因為我也試過把function 改成 void strcat_user (char *ori, char *add) 然後用標註的方式去把新字串加進去 int i =0; while ( ori[i] != '\0') i++; while ((ori[i] = *add++)) ; 但還是fail 麻煩大家了 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.7.78 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1420358386.A.6C3.html

01/04 21:36, , 1F
蔡神!!
01/04 21:36, 1F

01/04 22:45, , 2F
我朋友推薦我這本的,原來他這麼強
01/04 22:45, 2F

01/05 00:47, , 3F
while (*(ori++)) while (*(ori++) = *(add++)) 要括號
01/05 00:47, 3F
文章代碼(AID): #1KgFBoR3 (C_and_CPP)
文章代碼(AID): #1KgFBoR3 (C_and_CPP)