字符串分割

亚细亚 2009-07-31 10:10:11
char *str="This*is**";
char *strArray[4];
我要将上面的字符串分割为:
This
is
0
0
然后将分割后的字符串分别放到指针数组strArray中;
该函数如何写?
...全文
141 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
city_t 2009-08-01
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<string.h>
#include<string.h>

main()
{
char *str="ab*cd*ef**";
char *strArray[5];
int i=0;
int t=0;
int j=0;
for(i=0;i<5;i++)
strArray[i]=(char *)malloc(strlen(str)*sizeof(char));
i=0;
while(*str!='\0')
{
if(*str!='*')
{
*(strArray[i]+j)=*str++;
j++;
t=0;
}
else
{
if(++t==1)
{
*(strArray[i]+j)='\0';
j=0;
i++;
}
if(t==2)
{
*(strArray[i])='0';
*(strArray[i]+1)='\0';
i++;
t=0;
}
str++;
}
}
if(*(--str)=='*')
*(strArray[i]+j++)='0';
*(strArray[i]+j)=*(++str);
for(i=0;i<5;i++)
printf("%s\n",strArray[i]);

}
lijian22500 2009-08-01
  • 打赏
  • 举报
回复
char *str="This*is**";
char *strArray[4];

“This*is**”是常量,不能改变,strArray是指针数组,没有内存空间,得先自己在栈或堆上开的空间。
ltc_mouse 2009-08-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yaxiya 的回复:]
字符串的判断都在函数strtok中。怎么得到剩余字符串?
[/Quote]
http://msdn.microsoft.com/en-us/library/2c8d19sb(VS.71).aspx
亚细亚 2009-08-01
  • 打赏
  • 举报
回复
我是在c下面用的
过去的我 2009-08-01
  • 打赏
  • 举报
回复
用python做会很方便.
亚细亚 2009-08-01
  • 打赏
  • 举报
回复
字符串的判断都在函数strtok中。怎么得到剩余字符串?
亚细亚 2009-08-01
  • 打赏
  • 举报
回复
测试:*ab*cd*ef*
结果是: ab cd ef 0
前面没有0
wuyu637 2009-07-31
  • 打赏
  • 举报
回复
strtok怎么实现不了你要的功能?

找到一个*以后,对下一个字符再判断一下不就可以了?

自己好好想想。我去睡觉了。
亚细亚 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kinges 的回复:]
引用楼主 yaxiya 的回复:
  char *str="This*is**";
  char *strArray[4];
我要将上面的字符串分割为:
This
is
0
0
然后将分割后的字符串分别放到指针数组strArray中;
该函数如何写?


楼主到底要做什么?

是把“*”去掉,换成 回车,最后再加两零?

这个程序好像很简单吧!

[/Quote]
是把*去掉。
不知你是否明白我的意思
假如有字符串:ab*cd**ef
那么我就要求分割成:
ab
cd
0
ef
如果是ab*cd*ef*
那么我就要求分割成:
ab
cd
ef
0
如果是ab*cd*ef**
那么我就要求分割成:
ab
cd
ed
0
0
不知道我这样表达清楚了吗?
starcat 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyu637 的回复:]
请使用strtok()函数

[/Quote]

天啦,又多了一个要学习用法的字符串函数。

昨天才找机会第一次用了strstr()写代码。
Kinges 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 yaxiya 的回复:]
  char *str="This*is**"; 
  char *strArray[4];
我要将上面的字符串分割为:
This
is
0
0
然后将分割后的字符串分别放到指针数组strArray中;
该函数如何写?
[/Quote]

楼主到底要做什么?

是把“*”去掉,换成 回车,最后再加两零?

这个程序好像很简单吧!
wuyu637 2009-07-31
  • 打赏
  • 举报
回复
为什么?
亚细亚 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyu637 的回复:]
请使用strtok()函数

[/Quote]
strtok()无法要求我的结果.
wuyu637 2009-07-31
  • 打赏
  • 举报
回复
请使用strtok()函数

70,037

社区成员

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

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