我的挤压功能没有按预期工作,我该怎么做才能修复这个功能?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的挤压功能没有按预期工作,我该怎么做才能修复这个功能?相关的知识,希望对你有一定的参考价值。
我正在做的是创建一个名为Squeeze的函数,它接受两个字符数组并进行比较。如果数组1中的字符值与数组2相同,则该函数应将其从字符数组中删除。
问题是,程序接受我的输入,但它不会删除在数组2中看到的数组1的类似值。
我已经尝试过改变squeeze的功能了,我得出的结论是,我需要遍历数组1并将数组中的第二个数组嵌入第一个,这样它就可以将数组1中的一个字符与数组2的整数进行比较,这样它就可以了可以正确擦除。问题是,虽然我知道嵌套策略有效,但它仍然不会像我想要的那样擦除字符。
#include <stdio.h>
#define MAXIMUM 1000
#define END '~'
void squeeze(char s1[], char s2[]);
int main()
{
int c, i,j;
int n = MAXIMUM;
char s1[MAXIMUM];
char s2[MAXIMUM];
printf("Please input the charachter for s1, type ~ when finished");
for(i = 0; i < n && (c = getchar())!= END; i++)
s1[i] = c;
printf("Please input the character for s2 type ~ when finished");
for(j = 0; j < n&& (c = getchar())!= END; j++)
s2[j] = c;
squeeze(s1, s2);
printf("After squeezing, the array s1 is %s", s1);
}
void squeeze(char s1[], char s2[])
{
int n = MAXIMUM;
s1[MAXIMUM];
s2[MAXIMUM];
int i, j;
for(i = 0; s1[i]!= '\0'; i++){
for(j = 0; s2[j] != '\0'; j++){
if(s1[i] != s2[j]){
s1[i] = s1[i];
}else if(s1[i] == s2[j]){
s1[i++] = s1[i];
}
}
}
}
预期的结果是:如果我输入s1的GOLDEN EXPERIENCE REQUIEM 然后输入:s2的GER
打印应返回OLD PINK QUIM
相反,打印返回OOLDNN XXPRIINNC EQQUIMM 0012 isqrt(a)
这是非常接近的,但我不想要多余的O,X,N,Q和M.此外,E仍然存在,而0012 isqrt(a)是该功能的不受欢迎的补充。
您的代码中存在逻辑问题,s1 [i ++] = s1 [i];导致双重复制,你不是从数组中删除双重副本,而是在s1 [i]中找到相同的字符时,尝试将0或其他值放在s2 [i]中,您将更好地了解该怎么做
这个循环都是关于变量i
:
for(i = 0; i < n && (c = getchar())!= END; i++)
This loop initializes
j
, then compares against i
, and increments i
.
for(j = 0; i < n&& (c = getchar())!= END; i++)
您想解释一下您认为这条线的作用吗?
s1[i] = s1[i];
以上是关于我的挤压功能没有按预期工作,我该怎么做才能修复这个功能?的主要内容,如果未能解决你的问题,请参考以下文章
我该如何解决这个问题。我正在尝试使用 len 功能,但它没有按预期工作 [重复]
我该怎么做才能让我的机器人再次工作? discord.py [关闭]