大家帮我看看这个题目!!!!谢谢!!!!

acboboly 2005-08-04 08:42:35
删除以下字符串"<R>","<Q>","</R>","</Q>"
函数原型: Void FilterStr(char * str)
不使用任何外部函数和库函数!!


谢谢!!!
...全文
218 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixingzhong 2005-08-05
  • 打赏
  • 举报
回复
删除以下字符串"<R>","<Q>","</R>","</Q>"
函数原型: Void FilterStr(char * str)
不使用任何外部函数和库函数!!




其实一样

自己建立 一个子串查找的函数

一个子串删除的函数

在Void FilterStr(char * str)中调用就好了




//虽然不让用 库函数 ,

//它们的函数思想 总不能限制我们 也不能使用的 呵呵
delete_this 2005-08-05
  • 打赏
  • 举报
回复
}
delete_this 2005-08-05
  • 打赏
  • 举报
回复
void FilterStr(char * str)
{
//删除以下字符串"<R>","<Q>","</R>","</Q>"

const char* C[4] = {"<R>","<Q>","</R>","</Q>"};
int n = sizeof(C) / sizeof(C[0]);

char* p = str;
while (*p)
{
for (int i=0; i<n; ++i)
{
char* q = p;

char* s = (char *) C[i];
while (*q && *s && *q==*s)
{
q++;
s++;
}

if (!*s)
{
char* a = p;
while (*a++ = *q++);
*a = 0;
p--;
break;
}

}

p++;
}
darkstar21cn 2005-08-04
  • 打赏
  • 举报
回复
void filterstr (char* str)
{
if (NULL == str)
{
return ;
}
int len = strlen (str);
char* temp = new char[len + 1];
strcpy (temp, str);
memset (str, 0, len + 1);
bool f = false;
int pos;
int count = 0;
int i = 0;
while ( i < len)
{
if (!f)
{
if (temp[i] == '<')
{
pos = i;
if ('/' == temp[i + 1])
{
pos++;
}
if ('R' == temp[pos + 1] || 'Q' == temp[pos + 1])
{
if ('>' == temp[pos + 2])
{
i = pos + 3;
continue;
}
}
}
str[count++] = temp[i++];
}
}
}

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧