【C编程练习】华为2013校园招聘机试题3:对源字符串中得字符串进行查找替换并返回动态申请空间的指针char* Fun(char*pSrc,char*pOldStr, char*pNewStr)
来源:互联网 发布:珍妮曲奇授权的淘宝店 编辑:程序博客网 时间:2024/04/30 12:52
//ex1_f1.cpp
// 源作者:曹玲玲 编于2012-09-12
//【题目】华为2013校园招聘机试题目9月10日题3
//【功能】 对源字符串中得字符串进行查找替换 并返回动态申请空间的指针 char* Fun(char* pSrc, char* pOldStr, char* pNewStr);
// 【输入】pSrc 源字符串
// pOldStr 需要被替换的字符串
// pNewStr 替换的新的字符串
// 【返回】替换后的新的字符串的指针
#include <stdio.h>
#include <stdlib.h>
char* Fun(char* pSrc, char* pOldStr, char* pNewStr)
{
int i=0,j=0,z=0;
int poisition=1;
unsigned Len_OldStr=0,Len_Src=0,Len_NewStr=0;//字符串pOldStr的长度
char *ReStr;
//字符串pSrc的长度
while(pSrc[i]!='\0')
{
Len_Src++;
i++;
}
//字符串pOldStr的长度
while(pOldStr[j]!='\0')
{
Len_OldStr++;
j++;
}
//字符串pOldStr的长度
while(pNewStr[z]!='\0')
{
Len_NewStr++;
z++;
}
i=0;j=0;z=0;
ReStr=(char *)malloc(Len_Src-Len_OldStr+Len_NewStr+1);
//查询字符串pOldStr在源字符串中的位置pSrc
while (pSrc[i]!='\0'&&pOldStr[j]!='\0')
{
if(pSrc[i]==pOldStr[j])//判断字符是否相等
{
i++;
j++;
}
else if (pSrc[i]==pOldStr[0])//不相等时:情况1:当前源字符与子串pOldStr[0]相同
{
poisition=i+1;//子串所在的位置是当前位置[i]
i++;
j=1;//下次从子串的第二个位置开始比较
}
else
{
poisition=i+2;//子串所在的位置是下一个位置[i+1]
i++;
j=0;//下次依然从子串的第一个位置开始比较
}
}
if (pOldStr[j]=='\0')
poisition=poisition;
else
{
poisition=0;//未查找到子串
return NULL;
}
//替换字符串并复制到新的字符串内
i=0;
j=0;
while(pSrc[i]!='\0')
{
if (i==poisition-1)
{
z=0;
while (pNewStr[z]!='\0')
{
ReStr[j]=pNewStr[z];
j++;
z++;
}
i=i+Len_OldStr;
}
else
{
ReStr[j]=pSrc[i];
j++;
i++;
}
}
ReStr[j]='\0';
return ReStr;
}
//主函数
void Fun_Main()
{
char* pSrc="caolingling";
char* pOldStr="ling";
char* pNewStr="mei";
char *Re;
Re=Fun(pSrc, pOldStr, pNewStr);
printf("源 字 符 串:%s\n需要替换的字符串:%s\n替 换 为:%s\n",pSrc, pOldStr, pNewStr);
printf("替换后为:%s",Re);
free(Re);
}
运行结果
- 【C编程练习】华为2013校园招聘机试题3:对源字符串中得字符串进行查找替换并返回动态申请空间的指针char* Fun(char*pSrc,char*pOldStr, char*pNewStr)
- 【C编程练习】华为2013校园招聘机试题目题4:删除一个字符串中出现次数最少的字符,函数原型为:char * delChar(char *s,int iLen)
- 【C编程练习】2013华为校园招聘机试题9月10日题1:把整数转换成字符串 void ConvertIntToStr(int nVal, char* pStr);
- 字符串替换(char*)
- 字符串数组char[]和字符串指针char*的讨论
- 【C编程练习】2013华为校园招聘机试题目题5:将一个int类型的数字转化为字符串,并判断有无重复字符串(长度应大于2)有返回1,无返回2
- C和指针之字符串编程练习8实现char *my_strnchr(char const *str, int ch, int which)
- 编写一个函数 char *strfind(char *s, char *t),用于查找字符串t在字符串s中最右边出现的位置,如果没有找到则返回NULL.
- C - char字符串操作
- char 字符串
- C语言中 char * char [] char*[] char**以及指针的理解
- char数组 、char指针与字符串常量的比较
- char数组 、char指针与字符串常量的比较
- string和c字符串(char*, char[])
- C语言编程练习5——编写函数void change(char *a,char *b,char*c)。 函数功能是首先把b指向的字符串逆向存放
- 函数在一个字符串中进行搜索,查找所有在一个给定字符集合中出现的字符,函数原型:char *find_char( char const *source, char const *chars);
- 全国计算机等级二级C++第四章习题编程题6 :编写一个函数 char *strfind(char *s, char *t),用于查找字符串t在字符串s中最右边出现的位置,如果没有找到则返回NULL.
- c++中string类字符串和c中char*/char[]型型字符串的区别
- java Md5加密工具类
- 常见的堆性能问题以及如何防范它们
- WebVulScan是一个Web应用程序漏洞扫描器
- WindowXP中NTFS格式硬盘权限设置
- Lua之迭代器和范性for
- 【C编程练习】华为2013校园招聘机试题3:对源字符串中得字符串进行查找替换并返回动态申请空间的指针char* Fun(char*pSrc,char*pOldStr, char*pNewStr)
- 将文件转化成二进制并读取保存该文件
- 在java中实现TCP协议编程
- 九月中旬
- 从那一天起,你就成了我的全部
- 【转载】你的PagedLOD 为什么没有卸载
- 细数电脑史上10大强悍黑客
- hdu1061
- Dtree+jQuery实现动态树结构