[問題] char array, *str++與*&str的問題
最近一直在寫些字串的函式 一堆問題 囧rz
目的是要切字串
ex: input string: Hello, I am C++.
output: Hello,
I
am
C++.
在main中一直呼叫 get_token(str, token)這個函式,直到切完。
流程應該是
1st call之後: str = I am C++. token = Hello,
2nd call之後: str = am C++. token = I
3rd call之後: str = C++. token = am
4rd call之後: str = 空字串 token = C++.
void get_token(char * &str, char *token)
{
int idx = 0;
while(*str && (*str != ' ' && *str != '\t' && *str != '\n') )
token[idx++] = *str++;
token[idx] = '\0';
while(*str &&(*str == ' ' || *str == '\t' || *str == '\n') )
*str++;
}
問題在一開始的 "void get_token(char * &str, char *token)"
寫成"void get_token(char *str, char *token)"就不能work
想請問是為什麼? 然後也想請問要如何解釋 char * &str
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.96.70
→
09/04 12:04, , 1F
09/04 12:04, 1F
→
09/04 12:05, , 2F
09/04 12:05, 2F
→
09/04 12:06, , 3F
09/04 12:06, 3F
→
09/04 12:07, , 4F
09/04 12:07, 4F
→
09/04 12:07, , 5F
09/04 12:07, 5F
hi, 我了解您說的,想再確定一下您說"get_token怎麼改它"
指的是*str++ 怎麼動這"指標"沒關係對吧?
因為我認為如果改成故意在get_token裡面寫 str[0] = '*'
那個回到main後,原本字串應該會被改成 *ello, I am C++. ??
※ 編輯: wawi 來自: 140.113.96.70 (09/04 12:18)
→
09/04 12:16, , 6F
09/04 12:16, 6F
→
09/04 12:17, , 7F
09/04 12:17, 7F
→
09/04 12:18, , 8F
09/04 12:18, 8F
※ 編輯: wawi 來自: 140.113.96.70 (09/04 12:18)
→
09/04 12:18, , 9F
09/04 12:18, 9F
→
09/04 12:22, , 10F
09/04 12:22, 10F
→
09/04 12:23, , 11F
09/04 12:23, 11F
→
09/04 12:40, , 12F
09/04 12:40, 12F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章