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

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

Восстановить пароль Регистрация
 
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
19.03.2013, 20:14     Замена двойных пробелов из входного файла на одиночный пробел и запись в выходной файл (объяснить работу кода) #1
Здравствуйте, нашла код программы, которая заменяет в файле 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++ Записать в выходной файл все строки входного файла
C++ Перепишите из входного файла в выходной только те строки, длина которых меньше 70
C++ Сформируйте выходной файл, вставив в первый входной файл содержимое второго входного файла с указанной позиции
Написать программу, которая копирует содержимое входного файла в выходной файл C++
Написать программу, которая копирует содержимое входного файла в выходной файл C++
C++ Программа, которая копирует содержимое входного файла в выходной; подсчитывает количество слов в тексте...
C++ Замените в тексте входного файла все группы подряд идущих пробелов на один пробел
C++ Написать программу, которая копирует содержимое входного файла в выходной файл
Разработать программу для удаления двойных пробелов и двойных запятых C++
Объяснить работу кода C++
C++ Объяснить работу кода

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fjay69
 Аватар для 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     Замена двойных пробелов из входного файла на одиночный пробел и запись в выходной файл (объяснить работу кода)
Ответ Создать тему
Опции темы

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