会员
周边
众包
新闻
博问
闪存
赞助商
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
faraway
公告
日历
导航
博客园
首页
新随笔
新文章
联系
订阅
管理
字符串中单词逆序
/**/
/**/
/**/
/*
* 将字符串中单词出现次序逆序。
* "123 45 6" --->> "6 45 123"
*
* 对字符串扫描两次,第一次全体逆序,第二次以单词为单位逆序
*
*/
#include
<
stdio.h
>
#include
<
stdlib.h
>
#include
<
string
.h
>
char
*
reverse_string(
char
*
p, unsigned
int
size )
{
char
tmp;
unsigned
int
i;
if
( p
==
NULL
||
size
==
0
||
size
==
1
)
return
NULL;
i
=
0
;
while
( i
<
size
/
2
)
{
tmp
=
p[i];
p[i]
=
p[size
-
1
-
i];
p[size
-
1
-
i]
=
tmp;
i
++
;
}
return
p;
}
int
main(
void
)
{
char
buf[
100
]
=
"
1234567 1 1234 56
"
;
unsigned
int
buf_size;
unsigned
int
i;
unsigned
int
j;
buf_size
=
strlen( buf );
printf(
"
old string:\n%s\n
"
, buf );
reverse_string( buf, buf_size );
printf(
"
reversed first time:\n%s\n
"
, buf );
i
=
0
;
while
( i
<
buf_size )
{
//
skip spaces
while
( buf[i]
==
'
'
&&
buf[i]
!=
'
\0
'
)
{
i
++
;
}
j
=
i;
//
find nearest space
while
( buf[i]
!=
'
'
&&
buf[i]
!=
'
\0
'
)
{
i
++
;
}
//
now j point to the first character of
//
current word and i point to the nearest space
reverse_string(
&
buf[j], i
-
j );
}
printf(
"
reversed string:\n%s\n
"
, buf );
return
0
;
}
posted on
2008-07-15 09:52
faraway
阅读(
831
) 评论(
2
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
Copyright © 2024 faraway
Powered by .NET 8.0 on Kubernetes