当前位置:网站首页>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
边栏推荐
- Filter usage of spark operator
- Upgrade MySQL 5.1 to 5.68
- Date date calculation in shell script
- 使用 Bitnami PostgreSQL Docker 镜像快速设置流复制集群
- Go语言数组,指针,结构体
- PHP operators
- The principle and common methods of multithreading and the difference between thread and runnable
- 导入地址表分析(根据库文件名求出:导入函数数量、函数序号、函数名称)
- Spark 算子之distinct使用
- 单体架构系统重新架构
猜你喜欢

大型互联网为什么禁止ip直连

APISIX jwt-auth 插件存在错误响应中泄露信息的风险公告(CVE-2022-29266)

Spark 算子之partitionBy

WPS brand was upgraded to focus on China. The other two domestic software were banned from going abroad with a low profile

Application of Bloom filter in 100 million flow e-commerce system

Load Balancer

Implement default page

多级缓存使用

腾讯Offer已拿,这99道算法高频面试题别漏了,80%都败在算法上

导入地址表分析(根据库文件名求出:导入函数数量、函数序号、函数名称)
随机推荐
One brush 314 sword finger offer 09 Implement queue (E) with two stacks
Upgrade MySQL 5.1 to 5.66
Spark 算子之partitionBy
【自娱自乐】构造笔记 week 2
【第5节 if和for】
MetaLife与ESTV建立战略合作伙伴关系并任命其首席执行官Eric Yoon为顾问
js正则判断域名或者IP的端口路径是否正确
Neodynamic Barcode Professional for WPF V11.0
Spark 算子之filter使用
R语言中实现作图对象排列的函数总结
Accumulation of applet knowledge points
pgpool-II 4.3 中文手册 - 入门教程
单体架构系统重新架构
Open source project recommendation: 3D point cloud processing software paraview, based on QT and VTK
Redis master-slave replication process
PHP operators
删除字符串中出现次数最少的字符
CVPR 2022 优质论文分享
字符串排序
Sortby use of spark operator