在线等待,『关于令牌访问中的指针问题』

sorrybabyg 2004-06-22 03:18:53
一个简单的令牌访问:
int main(int argc, char* argv[])
{
char str[80];
char token[80];
char *p,*q; cout<<"Enter a sentence:"<<endl;
gets(str); p=str;
while(*p){
q=token;
while(*p!=' '&&*p){
*q=*p;
q++;p++;
}
if(*p) p++;
*q='\0';
cout<<token<<endl;
}return 0;
}
从键盘获得带空格的字符,然后用str[]接收,遇到空格就把字符串放到token[]
我不明白的是,把字符串放到token的语句在哪里?
还有,最后输出数组token[]可以这样写吗?cout<<token<<endl;
...全文
69 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwertasdfg123 2004-06-22
  • 打赏
  • 举报
回复
q指向token,当q变化时,token也变化。注意q的指针一直都在增加。表示正在查找空格。
当找到空格后,q就会赋为0结束符。所以token产生了变化,表示字符串结束了,输出。
成功的理由是token最后有个结束符号。

sorrybabyg 2004-06-22
  • 打赏
  • 举报
回复
我又想了想,先*q=*p,然后回到第一个while循环,q=token,完成了对数组token的赋值,是不是这样?然后在打印中cout<<token<<endl;其实平时我也是这么写,不过q=token;意思是q被赋给指向token的地址值,这样就是写出cout<<token<<endl;可以成功的理由么?
jordan1 2004-06-22
  • 打赏
  • 举报
回复
sorry,不是把空格放入token,而是把空格前的字符串,放入token.
写错了,不好意思!
jordan1 2004-06-22
  • 打赏
  • 举报
回复
while(*p!=' '&&*p){
*q=*p;
q++;p++;
}
这就是把空格放入token的语句。
后面你可以用puts(token);即可输出。
yjh1982 2004-06-22
  • 打赏
  • 举报
回复
q=token;哈

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧