strtok函数
网页链接
char str[] ="i love c love c"
const char * split = " "
char * p
p = strtok (str,split)
while(p!=NULL) {
printf ("%s\n",p)
p = strtok(NULL,split)
}
这么循环
说下我的逻辑,不一定最优
先弄个结构体struct里面有一个char*和一个int
再建个struct的数组
在每次循环对比之前获得的struct数组中是否含有相同的字符串
有就计数器+1
没有就在数组中为null的地方加上一个成员为这个字符串和计数为1的struct
循环结束时遍历struct数组
好久没写C了,怕给你的代码有bug,就写思路把
用scanf以%s读入字符串,即可实现输入以空格分隔的字符串。
以下代码功能为,循环读入以空格分隔字符串,并每行打印一条,读到EOF时,停止输入。
int main(){
char s[100]
while(~scanf("%s",s)) puts(s)
}
使用strtok函数即可实现分割字符串。
1、strtok函数:
原型:char *strtok(char s[], const char *delim);
功能:将一个字符串分解为一组字符串,s为要分解的字符串,delim为分隔符字符串;
说明:当strtok函数在参数s的字符串中发现参数delim中包含的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的指针;
头文件:string.h;
返回值:从字符串s开头开始的一个个被分割的字符串。分割结束时,返回NULL。所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。
2、例程:
#include<stdio.h>#include<string.h>
int main(){
char input[16]="abc,d,ef,g"//待分解字符串
char* delim=","//分隔符字符串
char* p=strtok(input,delim)//第一次调用strtok
while(p!=NULL){//当返回值不为NULL时,继续循环
printf("%s\n",p)//输出分解的字符串
p=strtok(NULL,delim)//继续调用strtok,分解剩下的字符串
}
return 0
}