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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
rjkmrf1988
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 48
21.05.2011, 08:37     Удалить из файла все лишние пробелы #1
Добрый день помоги пожалуйста с задачами на файлы

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);
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 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
 Аватар для diagon
1920 / 1186 / 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
21 / 54 / 12
Регистрация: 23.03.2015
Сообщений: 219
Завершенные тесты: 1
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     Удалить из файла все лишние пробелы
Ответ Создать тему
Опции темы

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