我有一个小问题。 我有一个接受两个参数(两个字符串)的函数。例如: String1 = "你好" String2 = "狮子座" 我需要从 String1 中的 String2 中删除所有字符。在这种情况下,我的最终结果应该是:“h”。这样做时我需要合并指针!到目前为止我已经得到了这段代码,但它只是从“hello”中删除了“e”。我不知道为什么它不起作用。如果有人有更好或更有效的方法,请提供帮助!
void rmstr(char str1[], char str2[])
{
//遍历两个字符串的指针
char *p_str1 = &str1[0];
字符 *p_skip;
int 长度 = (int)strlen(str2);
诠释我;
while(*p_str1 != '\0')
{
对于 (i = 0; i < 长度; i++)
{
如果(*p_str1 == str2[i])
{
对于(p_skip = p_str1;*p_skip == str2[i];++p_skip);
memcpy(p_str1, p_skip, &str1[strlen(str1)+1] - p_skip);
}
如果(*p_str1 != '\0')
{
++p_str1;
}
}
}
}
最佳答案
char* rmstr(char *str1, char *str2, char *ans) {
char *p1 = str1;
char *p2 = str2;
char *res = ans;
while (*p1 != '\0') {
p2 = str2;
while (*p2 != '\0') {
if (*p1 == *p2) // A character in str1 is found inside str2
break;
p2++;
}
if (*p2 == '\0') { // No match found
*ans = *p1;
ans++;
}
p1++;
}
*ans = '\0';
return res;
}
测试代码:
int main(void) {
char str1[] = "hello";
char str2[] = "elo";
char ans[10];
printf(rmstr(str1, str2, ans));
return 0;
}
关于c - 从第一个字符串中的第二个字符串中删除所有出现的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18878754/