字符串操作 要求完成字串在主串中出现的次数,然后按照要求对字符串进行替换
2017-03-11 02:38
302 查看
#include<stdio.h> #include<stdlib.h> int strTime(const char *str1, const char *str2, int *time) { int count = 0; char *p1 = str1; char *p2 = str2; //p1是第一次出现的位置 p1 = strstr(p1, p2); //注意这里不要写成*p1!=NULL 因为*p1 是null的地址一旦读取*p1 会出错的!!!! //千万不要写成 *p //while (*p1 != '\0') //while (p1 != NULL) while (p1) { count++; //让指针向后移动str2长度个位置 p1 = p1+strlen(str2); //找到下一次出现的位置 p1 = strstr(p1, p2); } *time = count; return 1; } //这套代码也可以实现 /*int strTime(const char *str1, const char *str2, int *time) { char *p = NULL; int count = 0; char *sub = NULL; p = str1; sub = str2; do { p = strstr(p, sub); if (p != NULL) { count++; p = p + strlen(sub); } else { break; } } while (*p != '\0'); *time = count; }*/ int getRes2(const char *str, const char *substr, int *time, char **buf2) { char *buf = (char *)malloc(strlen(str)*sizeof(char)); char *pbuf = buf; //进行字符串的替换 char *p = NULL; char *sub = NULL; p = str; sub = substr; int flag = 4; //只要是不相等的情况下就将字符拷贝到buf中 char *point = "dcba"; while (*p != '\0') { if (*p != *sub) { *buf = *p; buf++; p++; //printf("%s\n", pbuf); } //想等情况下也就是找到了需要替换的位置 else { for (int i = 0; i < flag; i++) { *buf = *point; buf++; point++; // printf("%s\n", pbuf); } //控制4321循环 flag--; //这里需要将离开了"dcba"首地址的指针重新定位回去 point = "dcba"; if (flag == 0) { flag = 4; } //相等的时候需要让p指针跨越四个字节也就是他下一次进行查找的位置 p += 4; } } *buf = '\0'; *buf2 = pbuf; } void main() { char *str1 = "abcd11111abcd2222abcdqqqqqabcd11111abcd2222abcdqqqqqabcd11111abcd2222abcdqqqqq"; char *str2 = "abcd"; int time = 0; //1求字符串"abcd"出现的次数 strTime(str1, str2, &time); printf("出现的次数是%d\n", time); char *buf = NULL; //把字符串替换成(dcba11111dcb2222dqqqqqdd11111dcba.....) //注意特点逆序后,每次字符少一个,四次一循环; getRes2(str1, str2, &time, &buf); printf("原来的字符串 %s\n", str1); printf("替换后的字符串 %s\n", buf); system("pause"); }
相关文章推荐
- 通过操作指针,与指针做函数参数'实现字串在主串中出现的次数,然后将出现的部分按照要求进行替换
- 【通过操作指针,与指针做函数參数'实现字串在主串中出现的次数,然后将出现的部分依照要求进行替换 】
- 请编写相关函数来完成对一段英文字符串进行字母统计功能,出现最多那个字母的出现次数,不区分大小写。
- 字符串操作:统计子串在主串中出现的次数
- String去除字符串两端空格、将一个字符串进行反转、计算字符串中出现的的次数、获取两个字符串中最大相同字串
- 编程. 已知字符串:"this is a test of java". 按要求执行以下操作: (1) 统计该字符串中字母s出现的次数 (2) 取出子字符串"test" (3) 用多种方式将本字
- java中用正则表达式获取一个指定的子字符在字符串中出现的指定次数的下标索引,并且进行字符串分割
- 输出字符串中某个字串出现的次数
- 找出一行字符串中的连续出现次数最多的字串
- 按照查询结果中某列出现的次数进行排序的SQL语句
- 按照要求的输入输出格式进行日期字符串的转化
- 字符串操作--查询字符串出现的次数
- 从键盘输入一个字符串,按照字符顺序从小到大进行排序,并要求删除重复的的字符。
- 从控制台获取一串字符串,并对每个字符出现的次数进行统计
- 获取该字符串中,每一个字母出现的次数,要求打印结果是a(1)b(2)...
- 第十三周项目 5 字符串操作(字符统计)——A的出现次数
- 替换掉文本中出现次数较多的重复的字符串
- 对字符串中字符出现的次数进行排序
- 求一个字符串中连续出现次数最多的字串
- 批处理文件操作:替换文本文件某系字符写入新文件、遍历目录并进行字符串替换、拷贝文件到新目录、去掉文件扩展名