
- 字符串填充使用示例
- 字符串分割使用示例
- 工具函数代码
#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
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)