Удаление всех пробелов из строки - C (СИ) (73578)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Нужно удалить из большой строки все пробелы.
// Убираем все пробелы в RgbTable
for (g=0; g<100000000; g++)
{
    if (RgbTable[g]==' ')
    {
        for (p=g+1; p<(weight*height*7+height+1); p++)
        {
            RgbTable[p-1]=RgbTable[p];
        }
    }
}
// Убрали
Сделал свигом, но на больших объемах работает очень медленно. Как можно быстрее удалить все пробелы?

Решение задачи: «Удаление всех пробелов из строки»

textual
Листинг программы
    char str[] = "Lorem ipsum dolor sit amet, per omnis fastidii democritum no, esse audiam urbanitas et duo, in pro debet perpetua reformidans. Et sea tota fierent consequat. Qui graeci honestatis ei. Vel sale possim audire cu, ut his noluisse mediocrem referrentur, scaevola reprimique percipitur ad nam. Eam illum audire consulatu no, clita interpretaris nam eu, fierent disputationi ut vix.";
    char* write_ptr,* read_ptr;
    for(write_ptr = read_ptr = str; *read_ptr; ++read_ptr)
        if (*read_ptr != ' ') 
            *write_ptr++ = *read_ptr;
    *write_ptr = '\0';

Объяснение кода листинга программы

  1. Объявлены две переменные типа char: str[] и write_ptr, read_ptr;
  2. Значение переменной str[] установлено в Lorem ipsum dolor sit amet, per omnis fastidii democritum no, esse audiam urbanitas et duo, in pro debet perpetua reformidans. Et sea tota fierent consequat. Qui graeci honestatis ei. Vel sale possim audire cu, ut his noluisse mediocrem referrentur, scaevola reprimique percipitur ad nam. Eam illum audire consulatu no, clita interpretaris nam eu, fierent disputationi ut vix.;
  3. Значение переменной write_ptr установлено в адрес первого элемента массива str[];
  4. Значение переменной read_ptr установлено в адрес первого элемента массива str[];
  5. Запущен цикл for, который будет выполняться до тех пор, пока значение переменной read_ptr не станет равным нулю;
  6. Внутри цикла проверяется условие: если значение текущего элемента массива, на который указывает переменная read_ptr, не равно пробелу (' '), то значение этого элемента присваивается переменной write_ptr;
  7. Значение переменной write_ptr увеличивается на единицу;
  8. После выполнения цикла, значение переменной write_ptr будет указывать на последний элемент массива, который был обработан в цикле;
  9. Значение переменной write_ptr устанавливается равным нулю.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.462 из 5
Похожие ответы