c语言 将输入的字符串按照空格分割

Python012

c语言 将输入的字符串按照空格分割,第1张

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

}