Я делаю функцию Squeeze, которая берет два символьных массива и сравнивает их. Если в массиве 1 есть символьное значение, совпадающее с массивом 2, функция должна удалить его из массива символов.
Проблема в том, что программа принимает мой ввод, но не удаляет аналогичные значения массива 1, которые видны в массиве 2.
Я уже пытался изменить функцию squeeze, и я пришел к выводу, что мне нужно перебрать массив один и массив вложений два внутри массива один, чтобы он сравнивал один символ в массиве 1 со всем массивом два, чтобы он мог стереть правильно. Проблема в том, что, хотя я знаю, что стратегия вложения работает, она все равно не стирает символы, как я намереваюсь.
#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
и затем введите: GER для s2
Печать должна вернуть OLDN XPINC QUIM
Вместо этого печать возвращает OOLDNN XXPRIINNC EQQUIMM
0012 isqrt (a)
Что очень близко, но я не хочу лишних O, X, N, Q и M. Кроме того, E все еще там, и 0012 isqrt (a) является нежелательным дополнением к функции.