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

作者: CoSNaYe ( ~~)   2015-01-04 15:59:43
開發平台(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
麻煩大家了
感謝
作者: holydc (のヮの)   2015-01-04 21:36:00
蔡神!!
作者: CoSNaYe ( ~~)   2015-01-04 22:45:00
我朋友推薦我這本的,原來他這麼強
作者: tj386 (最愛歐陽三姊妹♥♥♥)   2015-01-05 00:47:00
while (*(ori++)) while (*(ori++) = *(add++)) 要括號

Links booklink

Contact Us: admin [ a t ] ucptt.com