C удалить символы из строки - PullRequest
       0

C удалить символы из строки

1 голос
/ 19 октября 2011

Мне нужно написать функцию в C , которая удаляет все символы из строки, которые равны введенному символу.Например, пользователь вводит строку «aabbccaabbcc» и символ «b», тогда результатом должно быть «aaccaacc».Я не могу найти ошибку в своем коде (функция не удаляет все символы, которые должны быть удалены):

void removechar( char str[], char t )
{
  int i,j;
  for(i=0; i<strlen(str); i++)
  {
    if (str[i]==t) 
      for (j=i; j<strlen(str); j++)
      {
        str[j]=str[j+1];   
      } 
  }
}

Ответы [ 4 ]

2 голосов
/ 19 октября 2011

Когда вы удаляете один символ (скажем, с индексом = 5) по этому индексу, теперь соответствует символу, который был при индексе = 6;но вы увеличиваете цикл for до index = 6, поэтому вы пропускаете новый символ с индексом = 5.
Вам лучше скопировать в новую строку действительные символы, это проще.
Или вы можете попробовать

void removechar( char str[], char t )
{
    int i,j;
    i = 0;
    while(i<strlen(str))
    {
        if (str[i]==t) 
        { 
            for (j=i; j<strlen(str); j++)
                str[j]=str[j+1];   
        } else i++;
    }
}
1 голос
/ 26 ноября 2017

Вот моя функция

const char *removeCommaFromString(char *str){
int i,j;
i = 0;
while(i<strlen(str))
{
    if (str[i]==',')
    {
        for (j=i; j<strlen(str); j++)
            str[j]=str[j+1];
    }
    else i++;
}
return str;

}

Использование

char sam[]= {"Samir, Samedov"};
char * sss;
sss = removeComma(sam);

printf("\n%s",sam);

Выход: Samir Samedov

1 голос
/ 19 октября 2011

Таким способом нельзя удалить символы из строки. То, что вы хотите сделать, это создать новую строку (массив *) и копировать символы, если символ не является т. в этом случае переходите к следующему символу.

1 голос
/ 19 октября 2011

Так как это выглядит как домашнее задание, я просто дам вам подсказку.Подумайте о том, что происходит с вашими счетчиками строк и циклов, когда у вас есть два соседних символа для удаления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...