当前位置:网站首页>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
边栏推荐
- IronPDF for .NET 2022.4.5455
- 为啥禁用外键约束
- MySQL集群模式與應用場景
- Leetcode-374 guess the size of the number
- Upgrade MySQL 5.1 to 5.67
- Spark 算子之filter使用
- 小程序知识点积累
- utils. Deprecated in35 may be cancelled due to upgrade. What should I do
- Single architecture system re architecture
- [AI weekly] NVIDIA designs chips with AI; The imperfect transformer needs to overcome the theoretical defect of self attention
猜你喜欢
Codejock Suite Pro v20. three
The principle and common methods of multithreading and the difference between thread and runnable
新动态:SmartMesh和MeshBox的合作新动向
单体架构系统重新架构
API IX JWT auth plug-in has an error. Risk announcement of information disclosure in response (cve-2022-29266)
5分钟,把你的Excel变成在线数据库,神奇的魔方网表excel数据库
实现缺省页面
Filter usage of spark operator
一文读懂串口及各种电平信号含义
Application of Bloom filter in 100 million flow e-commerce system
随机推荐
IronPDF for .NET 2022.4.5455
多线程原理和常用方法以及Thread和Runnable的区别
Named in pytoch_ parameters、named_ children、named_ Modules function
新动态:SmartMesh和MeshBox的合作新动向
使用 Bitnami PostgreSQL Docker 镜像快速设置流复制集群
PHP classes and objects
Modèle de Cluster MySQL et scénario d'application
现在做自媒体能赚钱吗?看完这篇文章你就明白了
MySQL集群模式与应用场景
MetaLife与ESTV建立战略合作伙伴关系并任命其首席执行官Eric Yoon为顾问
Spark 算子之distinct使用
运维流程有多重要,听说一年能省下200万?
负载均衡器
MySQL集群模式與應用場景
CVPR 2022 优质论文分享
leetcode-396 旋转函数
Treatment of idempotency
Spark 算子之groupBy使用
Open source project recommendation: 3D point cloud processing software paraview, based on QT and VTK
Application case of GPS Beidou high precision satellite time synchronization system