69,382
社区成员
发帖
与我相关
我的任务
分享
char s[] = "jdfleifjlsfeurzboffddjmvcfaswdlopuejdaajfuerlsmaswdlipjwejrnf";
char c[] = "aswd";
#include <iostream>
#include <string.h>
using namespace std;
char* replace_my(char* str, char c, const char* rc) ; // 查找替换
int find_cnt(char* str, char c); //查找计数
int main()
{
char s[] = "jdfleifjlsfeurzboffddjmvcfaswdlopuejdaajfuerlsmaswdlipjwejrnf";
char c[] = " ->aswd<- ";
char str[1024]; // 保证 str足够大
strcpy(str, s);
cout << str << endl;
replace_my(str, 'c', ""); // 找到 'c' 删除
cout << str << endl << endl;
strcpy(str, s);
cout << str << endl;
cout << "找到'j'的次数" << find_cnt(str,'j') <<endl;
replace_my(str, 'c', c); // 找到 'c' 替换成 c
cout << str << endl << endl;
return 0;
}
char* replace_my(char* str, char c, const char* rc) // 调用函数前,保证str能展开空间
{
char* ret = str;
char* cp = str;
size_t cnt = 0;
int rcsize = (int)strlen(rc);
while (*cp) {
if (*cp == c)
cnt++; // 统计找到 c 的次数
++cp;
}
if (cnt <= 0) // 没找到 c
return ret;
cp = str;
int bufsize = strlen(str) + rcsize * cnt + 1;
char * buf = new char[bufsize]; // 建立缓冲区buf
char * ps = buf;
while (*cp) {
*ps = *cp;
if (*cp == c) { // 替换字符 c 为字符串 rc
memcpy(ps, rc, rcsize);
ps += (rcsize-1);
}
++cp; ++ps;
}
*ps = '\0'; // 封闭缓冲区buf
strcpy(str , buf);
delete[] buf;
return ret;
}
int find_cnt(char* str, char c) //查找计数
{
char* cp = str;
int cnt = 0;
while (*cp) {
if (*cp == c)
cnt++; // 统计找到 c 的次数
++cp;
}
return cnt;
}