这个分词程序如何做?

lezi1022 2006-10-11 10:10:07
char buf[] = {'a','b','\0','c','d','\0','e','f','\0','\0'}
如何从buf里面得到字符串"ab","cd","ef"?(当然事先buf里面的字符串数目我们事先是不知道的)
...全文
164 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Arthur_ 2006-10-11
  • 打赏
  • 举报
回复
n是buf长度,事先知道了。
===================
沒有必要知道


好,nice
lezi1022 2006-10-11
  • 打赏
  • 举报
回复
n是buf长度,事先知道了。
这个buf字符串其实是有GetPrivateProfileString得来得
lezi1022 2006-10-11
  • 打赏
  • 举报
回复
for( i = 0; i < n ; i ++){
if(buf[i] == NULL)
if(buf[i+1] == NULL)
break;
else
buf[i] = '#';
}
怎么样?
Arthur_ 2006-10-11
  • 打赏
  • 举报
回复
buf[--i]='\0';
我..
Arthur_ 2006-10-11
  • 打赏
  • 举报
回复
寫的優點問題看下面的
int mark=0,i;
for(i=0;;i++)
{
if(mark==2) break;
if(buf[i]=='\0'){
buf[i]='#';
mark++;
}else{
mark=0;
}
}
buf[--i]='#';
Arthur_ 2006-10-11
  • 打赏
  • 举报
回复
char buf[] = {'a','b','\0','c','d','\0','e','f','\0','\0'}
------------------------------------------------------------
長度這麼計算
int mark=0,i;
for(i=0;;i++)
{
if(mark==2) break;
if(buf[i]=='\0'){
buf[i]='#';
mark++;
}else{
mark=0;
}
}
//上面計算完後就編成char buf[] = {'a','b','#','c','d','#','e','f','#','\0'}
然後用strtok,至於strtok使用看msdn

lezi1022 2006-10-11
  • 打赏
  • 举报
回复
给个算法吧?
因为事先不知道里面又多少字符串,每个字符串有多大!不知道开多大的buf
westdot 2006-10-11
  • 打赏
  • 举报
回复
存到另一个buffer里面不就行了?
Arthur_ 2006-10-11
  • 打赏
  • 举报
回复
char buf[] = {'a','b','\0','c','d','\0','e','f','\0','\0'}

if change the above into
char buf[] = {'a','b','#','c','d','#','e','f','#','\0'}
then
you can use the function "strtok(buf,'#')" to split it,

but how? maybe you can use "for" to find the char '\0'

it's a hard work

lezi1022 2006-10-11
  • 打赏
  • 举报
回复
问题在于copy出来的字符怎么存储?
barenx 2006-10-11
  • 打赏
  • 举报
回复
在buf中查找\0
当在buf内找到\0时把指针移到下一个字符
如果是字符就copy出来
然后移动指针strlen()个位置
如果是\0就结束循环

如此循环即可
westdot 2006-10-11
  • 打赏
  • 举报
回复
只要得到里面字符串的各自的起始地址,再strcpy来就可以了。连续两个'\0'了就停止操作。

69,373

社区成员

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

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