函數 `getword(char *str)` 內 `str++` 移動局部副本,返回時外部指針仍指向原位置,導致無法正確獲取字符串。
C 語言**值傳遞**:函數接收指針**副本**,函數內修改副本指向不影響實參指針。
bool getword(char **out) {
char buf[100]; char *p = buf;
// ... 填充 p ...
*out = strdup(buf); // 調用者需 free
return true;
}
// 調用
char *str; getword(&str);
void getword(char *buf, int size) {
// 直接寫入 buf,不移動 buf 指針
int i=0, ch;
while ((ch=getchar())!=EOF && ch!='\n' && i