【通过操作指针,与指针做函数參数#39;实现字串在主串中出现的次数,然后将出现的部分依照要求进行替换 】...
#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");
}
【通过操作指针,与指针做函数參数#39;实现字串在主串中出现的次数,然后将出现的部分依照要求进行替换 】...相关推荐
- 指针的引用做函数的参数
#include <iostream>using namespace std; // 二级指针的使用 [11/24/2017 Andrew]struct Teacher {char nam ...
- c语言指针和函数对数组A升序排序,函数指针作为函数參数,实现冒泡排序的升序排序和降序排序...
#include #define N 10//定义数组元素个数 int Ascending(int a,int b);//升序排列的函数声明 int Descending(int a,int b);/ ...
- 用python处理excel数据做函数_如何使用python通过函数式编程完成excel中的数据处理及分析工作...
Excel是数据分析中最常用的工具,本篇文章通过python与excel的功能对比介绍如何使用python通过函数式编程完成excel中的数据处理及分析工作.在Python中pandas库用于数据处理 ...
- c语言指针,return以及函数返回值
指针作为c语言的精华所在所以会多学习几天来扎实的掌握 void* 这不叫空指针,这叫无确切类型指针.这个指针指向一块内存,却没有告诉程序该用何种方式来解释这片内存.所以这种类型的指针不能直接进行取内容 ...
- c/c++教程 - 2.2 引用的使用方法,引用做函数参数,引用做返回值,引用的本质,常量引用
2. 引用 学习目的:取代C中的指针. 目录 2. 引用 2.1 引用的基本使用方法 2.2 引用注意事项 2.3 引用做函数参数 2.4引用做函数返回值 2.5 引用的本质 2.6 常量引用 相关教 ...
- Python学习笔记7:函数对象及函数对象作參数
一.lambda函数 比如: fun1 = lambda x,y: x + y print fun1(3,4) 输出:7 lambda生成一个函数对象.该函数參数为x,y,返回值为x+y.函数对象赋给 ...
- 具体解释可变參数列表
可变參数 至少有一个參数 比如:void add(int a,- ){} 例题 模拟printf()函数 #include <stdio.h> #include <stdarg ...
- 使用JDBC改变Oracle的session參数 NLS_DATE_FORMAT
近期项目除了一个问题,场景大概是这种,项目在国外开发.在项目开发过程中使用了大量的Oracle函数TO_DATE,可是开发者没有写第二个參数. 所以项目在国外的server上能够正常执行.但是在国内的 ...
- 运放參数解释及经常使用运放选型
集成运放的參数较多,当中主要參数分为直流指标和交流指标,外加全部芯片都有极限參数. 本文以NE5532为例,分别对各指标作简单解释. 以下内容除了图片从NE5532数据手冊上截取,其他内容都整理自网络 ...
最新文章
- POJ - 1904 King's Quest 强连通tanjar思想
- 【漫画】以后在有面试官问你AVL树,你就把这篇文章扔给他。
- datetimepicker 时间不更新_iOS 14.2 正式版推送:新增人体检测,这些功能值得更新...
- 二分法求解方程的根java_C语言二分法求解方程根的两种方法
- TensorFlow MNIST TensorBoard版本
- 基于生命周期理论的农业科学数据中心化管理模式
- web字体设置成平方字体_探索免费和开放的Web字体
- 深度分析Spring中的构造器注入
- 转:awakeFromNib/loadView/viewDidLoad总结
- sudo spctl --master-disable_2020推荐聊城灭火器检测--正规企业--【聊城市久安消防】...
- 英文文本处理 c github_真香警告!有了这个搜索大法,GitHub可以玩到飞起来!
- 计算机控制技术数据存储器有,计算机控制技术复习资料.doc
- 数据挖掘之拟合优度检验
- 应用加速,数字人民币接入多地交通出行场景 | 产业区块链发展周报
- SpringBoot整合EasyExcel实现Excel表格的导出功能
- Free Launch Bar
- 北京理工计算机科学与应用,沈蒙_北京理工大学计算机学院
- 【枚举的定义;枚举变量的定义、初始化和赋值】(学习笔记16--枚举)
- oracle wallet java_oracle wallet实践及常用维护操作
- Html .CSS JQUERY (magnifier)实现详情页面特效