Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Lierena
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 4
#1

Заменить серию пробелов одним символом пробела - C++

27.05.2012, 11:40. Просмотров 1199. Ответов 3
Метки нет (Все метки)

Вот моя задача: преобразовать данный текст, заменяя всякую серию пробелов одним символом пробела.
Вот что у меня получилось.
не могу понять в чем ошибка. помогите пожалуйста!
Вложения
Тип файла: rar 123.rar (426 байт, 15 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2012, 11:40     Заменить серию пробелов одним символом пробела
Посмотрите здесь:

О передаче массива в функцию, которая заменяет серию пробелов одним пробелом - C++
Нужно написать функцию, чтоб она получала символьный массив L, и возвращала массив Lsource в котором подряд идущие пробельные символы...

Удалить группы пробелов, которыми начинается и заканчивается строка, а каждую внутреннюю группу пробелов заменить одним пробелом - C++
Задана строка символов. Преобразовать эту строку следующим образом: удалить группы пробелов, которыми начинается и заканчивается строка, а...

Заменить последовательность цифр одним символом # - C++
Здравствуйте, собственно сама задача: Дан текст(2-3 строки) в файле F1. Описать функцию преобразования строки, которая заменяет все...

Как заменить буквы одним символом, а знаки препинания - другим? - C++
Здравствуйте! Дайте, пожалуйста, идею, как можно оставить в тексте только цифры, заменив все буквы символами «*», а знаки препинания –...

Заменить любую группу пробелов одним - C++
помогите пожалуйста с лабой. необходимо сжать строку , заменив любую группу пробелов одним пробелом.Исходную строку и результат вывести...

Заменить несколько подряд идущих пробелов одним - C++
Напишите программу, которая посимвольно читает из std::cin, пока не достигнет конца потока ввода, и заменяет несколько подряд идущих...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lierena
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 4
27.05.2012, 14:03  [ТС]     Заменить серию пробелов одним символом пробела #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream.h>
#include <stdio.h>
#include <string.h>
void main()
 {
   char s[80];
   int i,k,l,n;
   FILE *fin, *fout;
   fin=fopen("input.txt", "r");
   fout=fopen("output.txt", "w");
 
   while (NULL!=fgets(s,80,fin))
    {
     i=0;
     while (s[i]!='\0')
      {
       if (s[i]==' ')
    {
     if (s[i+1]==' ')
       {
        k=i;
        l=i;
        n=1;
        while ((s[l]!='\0')&&(s[l]==' '))
         { l++;
           }
        while (s[l]!='\0')
         { s[k+n]=s[l];
           n++;
           l++;}
        } else i++;
        }
        i++;}
        fprintf(fout,"%s",s);
        }
     fclose(fin);
     fclose(fout);
     }
Добавлено через 9 минут
Или я все верно сделала?

Добавлено через 1 час 0 минут
Я просто не знаю что не так. мне кажется все правильно но в итоге ничего не происходит. то есть во втором файле, куда должен помещаться получившийся текст ничего нет.

Добавлено через 7 минут
извините, что неточно выразилась..
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
27.05.2012, 14:56     Заменить серию пробелов одним символом пробела #3
Код не изучал, но у меня программа работает верно. Правда это (за исключением первого заголовка) программа на чистом Си, а не C++.
В программе нет проверки на возможность открытия файлов, может быть просто входной файл не находится?

Добавлено через 1 минуту
Ах, нет, поторопился. Не совсем верно. Значит буду проверять.

Добавлено через 7 минут
В цикле в строках 27-30 не копируется символ конца строки. Из-за этого в конце остаётся мусор.
Между строками 30 и 31 можно вставить
C++
1
s[k+n]='\0';
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2012, 15:26     Заменить серию пробелов одним символом пробела
Еще ссылки по теме:

Заменить несколько подряд идущих пробелов одним - C++
нужна программа какая заменяет несколько подряд идущих пробелов одним и выводит полученный результат в std::cout. Никаких других символов,...

Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все пробелы, следующие непосредственно за пробелом) - C++
Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все пробелы, следующие непосредственно за...

Последовательности пробелов заменнить символом табуляции - C++
нужно написать программу, которая, запросив у пользователя имя входного текстового файла и цену символа “HT- горизонтальный табулятор”...

Заполнить всю консоль одним символом - C++
Создаю двухмерный массив - буфер консоли(или называйте его как хотите) 25x80. Затем вывожу весь массив в консоль - ОЖИДАНИЕ: вся область...

Заполнение двумерного массива char-ов одним символом - C++
Нужно чтобы весь массив был забит одним символом (например Н) Код: #include &lt;iostream&gt; using namespace std; void main(){ ...

Как ограничить поле ввода только одним символом? А двумя? - C++
Как ограничить поле ввода только одним символом? А двумя? Например чтобы сразу после нажатия клавиши(двух), программа переходила к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Lierena
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 4
27.05.2012, 15:26  [ТС]     Заменить серию пробелов одним символом пробела #4
Спасибо за помощь!
Yandex
Объявления
27.05.2012, 15:26     Заменить серию пробелов одним символом пробела
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru