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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
rjkmrf1988
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 48
#1

Удалить из файла все лишние пробелы - C++

21.05.2011, 08:37. Просмотров 2653. Ответов 5
Метки нет (Все метки)

Добрый день помоги пожалуйста с задачами на файлы

1) Дан текстовой файл. Удалить из него все лишние пробелы, оставив между словами не более одного пробела. Результат поместить в новый файл.


2) Дан файл, содержащий текст и арифметические выражения вида a Q b, где Q — один из знаков +,—,*,/ . Выписать все арифметические выражения и вычислить их значения

Добавлено через 58 секунд
вот что то подобное пробовал написать но ругается на FILE* in, out;

C++
1
2
3
4
5
6
7
8
9
10
11
FILE* in, out;
in = fopen("input.txt","r");
out = fopen("output.txt","w");
char buf, buf2=' ';//buf2<>' ' тогда пробелы в начале файла не будет удалять
fscanf(in,"%c",&buf);
while (buf!=EOF)
{ if (buf==' ' && buf2==' ');
  else fprintf(out,"%c",buf);
  buf2=buf;
  fscanf(in,"%c",&buf);
}
fclose(in);fclose(out);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2011, 08:37     Удалить из файла все лишние пробелы
Посмотрите здесь:

В символьной строке удалить все лишние подряд идущие пробелы. C++
В символьной строке удалить все лишние подряд идущие пробелы. C++
C++ Удалить лишние пробелы в строке
Удалить лишние пробелы C++
C++ Работа с файлами. Удалить все лишние пробелы, оставив между словами не более одного пробела
Удалить лишние пробелы C++
Удалить все лишние пробелы C++
Удалить из файла все однобуквенные слова и лишние пробелы. Результат записать в файл g C++
C++ Дана строка. Удалить из нее все лишние пробелы
Задан текст, удалить в нём все лишние пробелы C++
C++ Файл: Удалить из файла все однобуквенные слова и лишние пробелы.
Удалить в каждой строке лишние пробелы; исходную информацию считать из текстового файла C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
1924 / 1190 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
21.05.2011, 08:42     Удалить из файла все лишние пробелы #2
C++
1
FILE *in,*out;
rjkmrf1988
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 48
21.05.2011, 10:37  [ТС]     Удалить из файла все лишние пробелы #3
спасибо за совет заработало, только что то кивоватенько сделал видать. выводит до конца файла последнюю букву в последнем слове, а если пробелы стоят то ваше пустой файл
diagon
Higher
1924 / 1190 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
21.05.2011, 11:17     Удалить из файла все лишние пробелы #4
В вашем коде разобраться не смог, вот простенький код, переносит текст из файла input.txt в output.txt, но без повторяющихся пробелов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main(){
    FILE *in=fopen("input.txt","r"),*out=fopen("output.txt","w");
    char c;
    bool repeat=false;   //повтор
    while(!feof(in)){  //пока не конец файла
        fscanf(in,"%c",&c);   //считываем символ
        if (c==' '&&repeat) continue; //если пробел повторяется, то считываем дальше
        if (c==' '&&!repeat) repeat=true;else repeat=false; //если символ-пробел, но до него нет других пробелов, булевской переменной присваиваем 1, иначе 0
        fprintf(out,"%c",c); //ложим в output.txt символ
    }
    return 0;
}
rjkmrf1988
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 48
21.05.2011, 19:19  [ТС]     Удалить из файла все лишние пробелы #5
Премного благодарен
askurandrio
Заблокирован
07.04.2015, 07:12     Удалить из файла все лишние пробелы #6
А так не проще?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main(){
    FILE *in=fopen("teht.txt","r"),*out=fopen("textmod.txt","w");
    char c;
    int a=0;   
    while(!feof(in)) //пока не конец файла
    {
        fscanf(in,"%c",&c);   //считываем символ
        if (c == ' ') 
        {   
            a++;
            if (a > 2) fprintf (out,"*",c); 
        } 
        else a=0;
        fprintf (out,"%c",c); 
    }
    return 0;
}
Yandex
Объявления
07.04.2015, 07:12     Удалить из файла все лишние пробелы
Ответ Создать тему
Опции темы

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