| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5385 人关注过本帖
标题:字符串逆序输出的问题
只看楼主 加入收藏
aminangel
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-10-9
收藏
 问题点数:0 回复次数:8 
字符串逆序输出的问题

char *revstr(char *str)
{
char ch;
char *left=str;
char *start=str;
while(*str!='\0')
{
str++;
}
str--;
if(left<str)
{
ch=*str;
*str=*left;
*left=ch;
left++;
str--;
}
return start;

}


main()
{
char *p="aaabbcc";
char *out;
out=revstr(p);
printf("%s\n",out);
}
大家能帮我看看这个程序有什么问题吗?谢谢

[此贴子已经被作者于2006-11-13 11:21:23编辑过]

搜索更多相关主题的帖子: str 逆序 char left 字符 
2006-11-13 11:05
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用aminangel在2006-11-13 11:05:06的发言:

char *revstr(char *str)
{
char ch;
char *left=str;
char *start=str;
while(*str!='\0')
{
str--;
}
str--; 使得最前一个字符是'\0',那怎么会有输出.
if(left<str)
{
ch=*str;
*str=*left;
*left=ch;
left++;
str--;
}
return start;

}


main()
{
char *p="aaabbcc";
char *out;
out=revstr(p);
printf("%s\n",out);
}
大家能帮我看看这个程序有什么问题吗?谢谢


倚天照海花无数,流水高山心自知。
2006-11-13 11:19
aminangel
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-10-9
收藏
得分:0 

while(*str!='\0')
{
str++;
}
最后str不是应该指向'\0'吗?


我就是猪猪,爱吃爱睡,执着、倔强、乐观、向上!
2006-11-13 11:23
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
但你把它最后一个字符('\0')给start的第一个字符.这个是字符串结束符.所以没有输出.

倚天照海花无数,流水高山心自知。
2006-11-13 11:38
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
说错了,应该叫输出为空.

倚天照海花无数,流水高山心自知。
2006-11-13 11:39
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
Do you notice this expression : char *p="aaabbcc" ? So, the p_pointer points to an address where is in the static memory.And you can't change the value of the string "aaabbcc" for it is stored in the static memory.
So you have to modify this expression.Try to write "char p[] = "aaabbcc" to instead of the wrong expression.


我的原则很简单:不做不喜欢的事!
2006-11-13 12:25
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
while(*str!='\0')
{
str++;
}
最后str不是应该指向'\0'吗?
==================
That's right.

我的原则很简单:不做不喜欢的事!
2006-11-13 12:26
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 

if(left<str)
{
ch=*str;
*str=*left;
*left=ch;
left++;
str--;
}
================

It is not neccesory to define ch for exchanging *str and *left. But the code in the if branch can't solve your problem for that left_pointer and str_pointer point to the same string.I mean, if you change the value of *str, and the value of the array will change also. So you can't reverse the string.

我的原则很简单:不做不喜欢的事!
2006-11-13 12:32
bnu_sdy
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-11-6
收藏
得分:0 
是的,深刻同意楼上的,
if(left<str)
{
ch=*str;
*str=*left;
*left=ch;
left++;
str--;
}

if要改成while。就ok了。

2006-11-13 15:27
快速回复:字符串逆序输出的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019108 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved