C语言自编字符串处理函数——字符串分割、字符串填充等

C语言自编字符串处理函数——字符串分割、字符串填充等,第1张

文章目录
  • 字符串填充使用示例
  • 字符串分割使用示例
  • 工具函数代码

字符串填充使用示例
#include 
#include 

#include "CStringTools.h"

int main()
{
    char cmd[1000];
    char cmdList[50][20];

    while (1)
    {
        gets(cmd);
        if (strcmp(cmd, "exit") == 0)
            break;

        fillWithKeys(cmd, "*#", ' ');

        printf("%s\n\n", cmd);
    }

    return 0;
}

字符串分割使用示例
#include 
#include 

#include "CStringTools.h"

int main()
{
    char cmd[1000];
    char cmdList[50][20];

    while (1)
    {
        gets(cmd);
        if (strcmp(cmd, "exit") == 0)
            break;

        int cnt = split(cmdList, cmd, "*#");
        for (int i = 0; i < cnt; ++i)
            printf("%d\t\t%s\n", i+1, cmdList[i]);

        printf("\n");
    }

    return 0;
}

工具函数代码

有.h和.c两个文件,将其加入到你的项目中,并且#include “CStringTools.h”,既可以使用其中的功能。

// CStringTools.h文件


#ifndef CSTRINGTOOLS_H_INCLUDED
#define CSTRINGTOOLS_H_INCLUDED

#include 
#include 

//在str指定字符keys前后填充一个content
void fillWithKeys(char *str, char* keys, char content);

//将字符串str按照分隔符keys分割成strList(上限50个字符串 长度20)
//返回实际分成的字符串的数量
int split(char strList[][20], char *str, char *keys);

#endif // CSTRINGTOOLS_H_INCLUDED
// CStringTools.c文件


#include "CStringTools.h"

void fillWithKeys(char *str, char* keys, char content)
{
    char *tmp = (char *)malloc(sizeof(char) * strlen(str));
    strcpy(tmp, str);

    int index = 0;
    for (int i = 0; i < strlen(tmp); ++i)
    {
        int flag = 0;
        for (int j = 0; j < strlen(keys); ++j)
        {
            if (keys[j] == tmp[i])
            {
                flag = 1;
                break;
            }
        }

        if (flag)
            str[index++] = content;
        str[index++] = tmp[i];
        if (flag)
            str[index++] = content;
    }
    str[index] = ';'free

    ()tmp;}
int

split (char[ strList][20],char * ,strchar * )keysint
{
    = cnt 0 ;[

    strstrlen()str]= [ keys0];[
    strstrlen()str]= ';' int=

    - start 1 ;for(
    int =0 i ; <strlen i ( );str++) inti=
    {
        0 flag ; for(
        int =0 j ; <strlen j ( );keys++) ifj(
        {
            [ ]keys==j[ ] str)i=1
            {
                flag ; break;
                }}
            if
        (

        )ifflag(
        {
            - 1i ) start > //切割[start+1,i-1]for
            {
                (
                int =+ j 1 start ; <=- j 1 i ; ++) [j]
                {
                    strList[cnt--j1start]=[ ] str;j}[
                ]
                strList[cnt--i 1 start ] =';' ++ ;}
                =cnt;
            }
            start } ireturn
        ;
    }

     cnt

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/728008.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-26
下一篇2022-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存