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