- 字符串填充使用示例
- 字符串分割使用示例
- 工具函数代码
#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("%snn", 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("%dtt%sn", 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 *str, char *keys)
{
int cnt = 0;
str[strlen(str)] = keys[0];
str[strlen(str)] = ' ';
int start = -1;
for (int i = 0; i < strlen(str); ++i)
{
int flag = 0;
for (int j = 0; j < strlen(keys); ++j)
{
if (keys[j] == str[i])
{
flag = 1;
break;
}
}
if(flag)
{
if (i - start > 1)
{
//切割[start+1,i-1]
for (int j = start + 1; j <= i - 1; ++j)
{
strList[cnt][j-start-1] = str[j];
}
strList[cnt][i - start - 1] = ' ';
++cnt;
}
start = i;
}
}
return cnt;
}



