【发布时间】:2013-09-18 17:36:35
【问题描述】:
我有一个小问题。 我有一个接受两个参数(两个字符串)的函数。例如: String1 = "你好" String2 = "狮子座" 我需要从 String1 中的 String2 中删除所有字符。在这种情况下,我的最终结果应该是:“h”。这样做时我需要合并指针!到目前为止我已经得到了这段代码,但它只是从“hello”中删除了“e”。我不知道为什么它不起作用。如果有人有更好或更有效的方法,请提供帮助!
void rmstr(char str1[], char str2[])
{
//Pointers to traverse two strings
char *p_str1 = &str1[0];
char *p_skip;
int length = (int)strlen(str2);
int i;
while(*p_str1 != '\0')
{
for (i = 0; i < length; i++)
{
if(*p_str1 == str2[i])
{
for(p_skip = p_str1; *p_skip == str2[i]; ++p_skip);
memcpy(p_str1, p_skip, &str1[strlen(str1)+1] - p_skip);
}
if(*p_str1 != '\0')
{
++p_str1;
}
}
}
}
【问题讨论】:
-
您正在推进通过
str2的for循环内的p_str1指针。它应该在那个循环之外。 -
你有没有想过这个?您的代码显然只在两个字符串中查找相同偏移量的字符,这显然无法解决任务。如果您给出与扮演的角色有关的字符串名称,您的代码会更清晰......第二个字符串只是一个无序的字符集合。