如何拆份字符串??

mytwins 2003-12-09 06:54:59
#include<stdio.h>
#include<string.h>
void main()
{
char str1[50]=" asd qwe";
char str2[3][20];
char s;
int i=0,j=0,k=0,n=0;
n=strlen(str1);
while(i<n)
{
if(str1[i]==' ')i++;
else
{ while(str1[i]!=' '&&i<n)
{
s=str1[i];
str2[k][j]=s;
i++;
j++;
};
k++;j=0;
};
};
puts(str2[0]); puts(str2[1]);
}
这段程序为什么运行后,str2没有被正确负值?而是在qwe后显示一堆乱码???
请高手指教.
...全文
24 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanyixin 2003-12-10
  • 打赏
  • 举报
回复

boost里的tokenizer ,专门做这种拆分字符串的事情。
janicen 2003-12-10
  • 打赏
  • 举报
回复
#include <string.h>
#include <stdio.h>

main()
{
char *s="Golden Global View";
char *d=" ";
char *p;


p=strtok(s,d);
while(p)
{
printf("%s\n",s);
strtok(NULL,d);
}

return 0;
}
mytwins 2003-12-09
  • 打赏
  • 举报
回复
哦!谢谢!!
tuxw 2003-12-09
  • 打赏
  • 举报
回复
字符串没有结束符
改一下

while(i<n)
{
if(str1[i]==' ')i++;
else
{ while(str1[i]!=' '&&i<n)
{
s=str1[i];
str2[k][j]=s;
i++;
j++;
};
// 这里,每分离出一个单词后,加上字符串结束符
str2[k][j] = '\0';
k++;j=0;
};
};

69,371

社区成员

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

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