当前位置:网站首页>C language self compiled string processing function - string segmentation, string filling, etc
C language self compiled string processing function - string segmentation, string filling, etc
2022-04-23 15:51:00 【MallocLu】
List of articles
String padding usage example
#include <stdio.h>
#include <stdlib.h>
#include "CStringTools.h"
int main()
{
char cmd[1000];
char cmdList[50][20];
while (1)
{
scanf("%s", cmd);
if (strcmp(cmd, "exit") == 0)
break;
fillWithKeys(cmd, "*#", ' ');
printf("%s\n\n", cmd);
}
return 0;
}
Example of string segmentation
#include <stdio.h>
#include <stdlib.h>
#include "CStringTools.h"
int main()
{
char cmd[1000];
char cmdList[50][20];
while (1)
{
scanf("%s", 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;
}
Tool function code
Yes .h and .c Two documents , Add it to your project , also #include “CStringTools.h”, You can use the functions .
// CStringTools.h file
#ifndef CSTRINGTOOLS_H_INCLUDED
#define CSTRINGTOOLS_H_INCLUDED
#include <string.h>
#include <malloc.h>
// stay str Specify the characters keys Fill one before and after content
void fillWithKeys(char *str, char* keys, char content);
// The string str According to the separator keys Divided into strList( ceiling 50 A string length 20)
// Returns the number of strings actually divided into
int split(char strList[][20], char *str, char *keys);
#endif // CSTRINGTOOLS_H_INCLUDED
// CStringTools.c file
#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] = '\0';
free(tmp);
}
int split(char strList[][20], char *str, char *keys)
{
int cnt = 0;
str[strlen(str)] = keys[0];
str[strlen(str)] = '\0';
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)
{
// cutting [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] = '\0';
++cnt;
}
start = i;
}
}
return cnt;
}
版权声明
本文为[MallocLu]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204231548205933.html
边栏推荐
猜你喜欢
C language --- string + memory function
时序模型:门控循环单元网络(GRU)
Redis master-slave replication process
C#,贝尔数(Bell Number)的计算方法与源程序
Use bitnami PostgreSQL docker image to quickly set up stream replication clusters
Codejock Suite Pro v20.3.0
MySQL集群模式与应用场景
APISIX jwt-auth 插件存在错误响应中泄露信息的风险公告(CVE-2022-29266)
Cookie&Session
Timing model: gated cyclic unit network (Gru)
随机推荐
实现缺省页面
Sortby use of spark operator
Import address table analysis (calculated according to the library file name: number of imported functions, function serial number and function name)
Use bitnami PostgreSQL docker image to quickly set up stream replication clusters
基础贪心总结
PS add texture to picture
Spark 算子之sortBy使用
Basic greedy summary
JVM - Chapter 2 - class loader subsystem
Modèle de Cluster MySQL et scénario d'application
山寨版归并【上】
Go语言条件,循环,函数
Fastjon2他来了,性能显著提升,还能再战十年
多生成树MSTP的配置
utils. Deprecated in35 may be cancelled due to upgrade. What should I do
One brush 312 - simple repetition set - Sword finger offer 03 Duplicate number in array (E)
IronPDF for .NET 2022.4.5455
WPS brand was upgraded to focus on China. The other two domestic software were banned from going abroad with a low profile
Spark 算子之coalesce与repartition
MySQL集群模式與應用場景