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

作者: narukaze (Pt)   2015-01-04 16:10:46
※ 引述《CoSNaYe ( ~~)》之銘言:
: ====================================================================
: #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++))
: ;
: }
: ==========================================================
你的程式在動作後
ori[30] 會存入這些東西 hello, '\0'world.'\0'
但是 printf("%s\n", ori); 遇到hello, 後面的'\0'
就會停止輸出
相信你知道要怎麼修正了:)
作者: CoSNaYe ( ~~)   2015-01-04 16:20:00
感謝!!我把第一個while 改成while(*ori){ori++}; 就好了
作者: narukaze (Pt)   2015-01-04 16:21:00
yup!
作者: CoSNaYe ( ~~)   2015-01-04 16:21:00
看來我得善加利用debugger去看的,謝啦!
作者: Firstshadow (IamCatづミ'_'ミづ)   2015-01-05 01:09:00
看不太懂QQ
作者: ACMANIAC (請肥宅救救肥宅)   2015-01-05 13:07:00
while (*ori++); 導致指標在原字串裡遇到 '\0' 以後又向後移動了一格,之後才接下去做要接上的字串。
作者: Firstshadow (IamCatづミ'_'ミづ)   2015-01-06 08:39:00
謝謝樓上 我懂了!

Links booklink

Contact Us: admin [ a t ] ucptt.com