永发信息网

请问,C语言中,对带分隔符的字符串如何分割?

答案:4  悬赏:0  手机版
解决时间 2021-04-15 17:34
请问,C语言中,对带分隔符的字符串如何分割?
最佳答案
C/C++中的Split函数是strtok()其函数原型如下:
char * strtok (char * str, const char * delimiters);

函数说明
strtok()用来将字符串分割成一个个片段。参数str指向欲分割的字符串,参数delimiters则为分割字符串,当strtok()在参数str的字符串中发现到参数delimiters的分割字符时则会将该字符改为'\0'字符。在第一次调用时,strtok()必需给予参数str字符串,往后的调用则将参数str设置成NULL。每次调用成功则返回下一个分割后的字符串指针。

返回值
返回下一个分割后的字符串指针,如果已无从分割则返回NULL。

示例-1

#include
#include

int main ()
{
char str[] ="a,b,c,d*e";
const char * split = ",";
char * p;
p = strtok (str,split);
while(p!=NULL) {
printf ("%s\n",p);
p = strtok(NULL,split);
}

getchar();
return 0;

}
本例中,实现对字符串'a,b,c,d*e"用逗号(,)来作界定符对字符串进行分割。
输出结果将如下所示:
a
b
c
d*e

因为delimiters支持多个分割符, 我们将本示例中的语句行
const char * split = ",";
改成 const char * split = ",*"; //用逗号(,)和星号(*)对字符串进行分割

这样输出结果将如下所示:
a
b
c
d
e
全部回答
问题比较含糊,条件不够充分。
如果分隔符已知,那么字符串内容为分隔符时,分割处理就行了。
String str = "" ;
str.split() ;
// 具体请文档 。

#include 
main()
{
char *arr[40]={""};
char result[40][255]={""};
char str[] = "1||333|4444";
char *sp = "|";
int i;
int j=0;
int k=0;
for(i=0;str[i]!='';i++){
if(str[i]=='|'){
++j;
continue;
}
result[j][k++] = str[i];
if(str[i+1] == '|' || str[i+1] == ''){
k = 0;
arr[j] = result[j];
printf("%d-%s ", j, result[j]);
}
}
printf("%s", (arr[0]));
scanf("%d", &i);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
奔跑吧兄弟第二季宣传片里,七个人穿的清一色
ibmx61error 0210:stuck key 39 press<F1>to
电脑喇叭一个响一个不响怎么办。
虎牙直播摇头道资料
QQ丝路多少怎么点亮
DNF最强悍的武器是什么
我是男的 我把刘海留长 把上面的头发剪成平头
简述七言诗形成发展的贡献
耳洞打了3年多了总是长不好怎么办?
从兰州市火车站到甘肃政法大学怎么走?打出租
皇马海盗是谁
月经有时两个月一次有时三月一次是怎么了
餐具上留下的洗洁精对身体有害么?
到淘宝网买东西,运费是加上支付宝一起给卖家
溢出的水的体积是多少?
推荐资讯
怎么腌制萝卜?
运动与从事体力工作有何区别。
求cs起源血战,雪地地图
填成语 世上最没有作为的人是?
川一 5级CC短 150万谁要?
阿胶是用颗粒的好,还是用阿胶桨好??
农历3月16是什么星座
阿瓦提镇博斯坦综合市场这个地址在什么地方,
有关于诚实守信的名言,诚信的句子有什么
盈通主板选择u盘启动按哪个键?
给个过12岁生日时演讲稿,多写多得!!!
2009最经典的一句话
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?