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

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

Войти
Регистрация
Восстановить пароль
 
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
#1

Замена двойных пробелов из входного файла на одиночный пробел и запись в выходной файл (объяснить работу кода) - C++

19.03.2013, 20:14. Просмотров 556. Ответов 2
Метки нет (Все метки)

Здравствуйте, нашла код программы, которая заменяет в файле Input.txt двойные пробелы в исходном файле на одиночные пробелы и выводит это все в файл Output.txt. Помогите пожалуйста разобраться, как работает программа после второго "if", не понимаю, каким образом происходит замена и за что принимаются переменные i,k,l,n. Спасибо.
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
39
40
41
42
43
#include "stdafx.h"
#include <iostream>
#include <ctype.h>
#include <conio.h>
#include <string.h>
#include <stdio.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++;
        s[k+n]='\0';
}
        } else i++;
        }
        i++;}
        fprintf(fout,"%s",s);
        }
     fclose(fin);
     fclose(fout);
     }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2013, 20:14     Замена двойных пробелов из входного файла на одиночный пробел и запись в выходной файл (объяснить работу кода)
Посмотрите здесь:

Замените в тексте входного файла все группы подряд идущих пробелов на один пробел - C++
Замените в тексте входного файла все группы подряд идущих пробелов на один пробел. Результат запишите в выходной файл

Записать в выходной файл все строки входного файла - C++
Помогите пожалуйста, через три дня сдавать. буду очень благодарен=) Дан входной текстовый файл, строка S (вводится с клавиатуры)....

Сформируйте выходной файл, вставив в первый входной файл содержимое второго входного файла с указанной позиции - C++
Помогите решить задачу. Даны два входных текстовых файла. Сформируйте выходной файл, вставив в первый входной файл содержимое второго...

Написать программу, которая копирует содержимое входного файла в выходной файл - C++
Написать программу, которая копирует содержимое входного файла в выходной файл; подсчитывает количество чисел в тексте (не цифр, а именно...

Написать программу, которая копирует содержимое входного файла в выходной файл - C++
треба: 1. Написати програму, яка копіює вміст вхідного файлу у вихідний; підраховує кількість розділових знаків у тексті; виводить усі...

Написать программу, которая копирует содержимое входного файла в выходной файл - C++
Пожалуйста помогите! Написать программу, которая копирует содержимое входного файла в выходной файл, подсчет количество цифр в тексте...

Разработать программу для удаления двойных пробелов и двойных запятых - C++
Привет всем, помогите разработать программу для удаления двойных пробелов и двойных запятых. А так же, чтобы после точки была заглавная...

Перепишите из входного файла в выходной только те строки, длина которых меньше 70 - C++
Помогите пожалуйста с решением задачки. Перепишите из входного файла в выходной только те строки, длина которых меньше 70. Строки...

Программа, которая копирует содержимое входного файла в выходной; подсчитывает количество слов в тексте... - C++
Написать программу, которая копирует содержимое входного файла в выходной; подсчитывает количество слов в тексте; выделяет слово,...

Объяснить работу кода - C++
Подскажите пожалуйста как работает этот код при F(9). На экран выводит 131159, но как это происходит? void F(int n) { if (n &gt; 0) ...

Объяснить работу кода - C++
Объясните что происходит в данном коде #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include&lt;cmath&gt; int _tmain(int argc, _TCHAR*...

Замена букв в тексте из файла и запись результатов в файл - C++
Здравствуйте, помогите, пожалуйста, дописать прогу - нужно, чтобы прога читала данные из файла, заменяла в нём букву t везде на букву x и...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
19.03.2013, 20:34     Замена двойных пробелов из входного файла на одиночный пробел и запись в выходной файл (объяснить работу кода) #2
Логика такая: используем i, чтобы пройтись по всем элементам строки до конца. Когда i-ый элемент - пробел, инициализируем n=0, Если следующий i опять пробел - n++. Если следующий i не пробел, заменяем i-ый элемент на i+n-ый элемент. Дойдя до конца строки записываем в i-ый элемент нулевой символ и наконец записываем строку в файл.
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
19.03.2013, 23:49  [ТС]     Замена двойных пробелов из входного файла на одиночный пробел и запись в выходной файл (объяснить работу кода) #3
Цитата Сообщение от fjay69 Посмотреть сообщение
Логика такая: используем i, чтобы пройтись по всем элементам строки до конца. Когда i-ый элемент - пробел, инициализируем n=0, Если следующий i опять пробел - n++. Если следующий i не пробел, заменяем i-ый элемент на i+n-ый элемент. Дойдя до конца строки записываем в i-ый элемент нулевой символ и наконец записываем строку в файл.
Спасибо,всё поняла! Еще вопрос: допустим я хочу ввести ограничения на эту замену,например,не заменять те пробелы,которые в кавычках или апострофах, какой наиболее простой цикл нужно добавить к коду?
Yandex
Объявления
19.03.2013, 23:49     Замена двойных пробелов из входного файла на одиночный пробел и запись в выходной файл (объяснить работу кода)
Ответ Создать тему
Опции темы

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