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

Текстовый файл - C++

Восстановить пароль Регистрация
 
harkonin
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 19
21.06.2010, 17:42     Текстовый файл #1
Помогите сделать прогу на С


Составить программу, которая читает текстовый файл и выполняет такое преобразование:

Во всем тексте вставить переход на новую строку там, где есть два Или больше пробела подряд
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2010, 17:42     Текстовый файл
Посмотрите здесь:

Текстовый файл UTF-8 сохранить как текстовый файл ANSI C++
C++ Скопировать текстовый файл в новый файл, заменив в каждой строке слова «ok» на «*»
C++ Текстовый файл перевести в двоичный, а потом полученный двоичный файл перевести обратно в текстовый
Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл C++
Даны натуральное , символьный файл и текстовый файл . Файл содержит 30 слов , каждое из которых будем называть ключевым C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
so1o
33 / 33 / 2
Регистрация: 16.11.2009
Сообщений: 192
21.06.2010, 19:11     Текстовый файл #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#icnlude <stdio.h>
#include <conio.h>
int main()
{
 char s[80];
 int i;
 FILE *fp,*fp2;
 fp=fopen("file.txt","rb");
 fgets(s);
 fp2=fopen("file2.txt","wb");
 for(i=0;i<80;i++)
 {
  fscanf(fp,"%c",&s[i]);
  fprintf(fp2,"%c",s[i]);
  if(s[i-1]==' ' && s[i]==' ')
  fprintf(fp2,"\n");
  }
  fclose(fp);
  fclose(fp2);
  rename(fp2,fp);
}
Добавлено через 21 секунду
не компилил, скорее много ошибок, но суть верна
harkonin
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 19
21.06.2010, 23:57  [ТС]     Текстовый файл #3
Спасибо большое!
JamesBlack
 Аватар для JamesBlack
36 / 36 / 3
Регистрация: 28.07.2009
Сообщений: 144
22.06.2010, 02:00     Текстовый файл #4
so1o, бред! Во первых, из файла читаться будет тока 80 символов, во вторых тебе нафиг не нужен никакой массив, только занимающий память, в третьих, нахрена тебе fgets пустой(???), в четвертых при переименовывании файлов нифига не произойдет, будет тока ошибка "такой файл уже существует".

Рабочий код:
Visual Studio
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
#include <fstream>
#include <Windows.h>
 
using namespace std;
 
int main()
{
    char a, filename[] = "file.txt", tmpfile[] = "file2.txt";
    int spaces;
    ifstream f1(filename);
    if (!f1.is_open()) return 1;
    f1.unsetf(ios::skipws);
    ofstream f2(tmpfile);
    while(!f1.eof())
    {
        f1 >> a;
        if (a==' ')
        {
            spaces = 0;
            while (a==' ')
            {
                f2 << ' ';
                f1 >> a;
                spaces++;
            }
            if (spaces>1) f2 << '\n';
        }
        f2 << a;
    }
    f1.close(); f2.close();
    DeleteFile(filename);
    rename(tmpfile, filename);
    return 0;
}


Borland C 3.1
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
#include <fstream.h>
#include <stdio.h>
 
int main()
{
    char a, filename[] = "file.txt", tmpfile[] = "file2.txt";
    int spaces;
    ifstream f1(filename);
    if (f1.fail()) return 1;
    f1.unsetf(ios::skipws);
    ofstream f2(tmpfile);
    while(!f1.eof())
    {
        f1 >> a;
        if (a==' ')
        {
            spaces = 0;
            while (a==' ')
            {
                f2 << ' ';
                f1 >> a;
                spaces++;
            }
            if (spaces>1) f2 << '\n';
        }
        f2 << a;
    }
    f1.close(); f2.close();
    remove(filename);
    rename(tmpfile, filename);
    return 0;
}
Egeni
10 / 10 / 1
Регистрация: 17.06.2010
Сообщений: 107
Записей в блоге: 1
22.06.2010, 13:29     Текстовый файл #5
Цитата Сообщение от JamesBlack Посмотреть сообщение
#include <fstream.h>
#include <stdio.h>
int main()
{
char a, filename[] = "file.txt", tmpfile[] = "file2.txt";
int spaces;
ifstream f1(filename);
if (f1.fail()) return 1;
f1.unsetf(ios::skipws);
ofstream f2(tmpfile);
while(!f1.eof())
{
f1 >> a;
if (a==' ')
{
spaces = 0;
while (a==' ')
{
f2 << ' ';
f1 >> a;
spaces++;
}
if (spaces>1) f2 << '\n';
}
f2 << a;
}
f1.close(); f2.close();
remove(filename);
rename(tmpfile, filename);
return 0;
}
не присвоен ios и skipws
FireNovel
 Аватар для FireNovel
150 / 73 / 8
Регистрация: 09.04.2010
Сообщений: 297
22.06.2010, 14:27     Текстовый файл #6
Цитата Сообщение от harkonin Посмотреть сообщение
Помогите сделать прогу на С
JamesBlack, Очень интересно! Но человек попросил на Си написать
JamesBlack
 Аватар для JamesBlack
36 / 36 / 3
Регистрация: 28.07.2009
Сообщений: 144
22.06.2010, 16:47     Текстовый файл #7
FireNovel, "на си" - это на borland c 3.1, у нас в россии преподы именно это понимают. А borlandC по сути среда поддерживающая C++, просто библиотеки немного другие. В любом случае, я уверен на 100% что препод это примет. И как минимум, эта программа - рабочая по сравнению с предлагаемой выше


Цитата Сообщение от Egeni Посмотреть сообщение
не присвоен ios и skipws
эм... ну как бы это не переменные. ios - это можно считать класс, а skipws - просто флаг (битовая маска) в этом классе. По сути, ios::skipws можно считать это какой-то целочисленной константой.

Добавлено через 1 минуту
В любом случае, работать через потоки пора учится, ибо все эти fopen - такая неудобная и непотребная штука!..
Prividenie
22.06.2010, 16:53
  #8

Не по теме:

Цитата Сообщение от JamesBlack Посмотреть сообщение
FireNovel, "на си" - это на borland c 3.1, у нас в россии преподы именно это понимают.
Дай бог здоровья вашим преподам

JamesBlack
 Аватар для JamesBlack
36 / 36 / 3
Регистрация: 28.07.2009
Сообщений: 144
22.06.2010, 17:02     Текстовый файл #9
Prividenie, неужели все так ужасно? Ну, в принципе можно на Си все перелопатить, если надо
Так надо? Переделать?
Prividenie
74 / 74 / 6
Регистрация: 05.10.2008
Сообщений: 233
22.06.2010, 17:03     Текстовый файл #10

Не по теме:

я просто здоровья пожелал, ничего более


сам я gwbasic предпочитаю
harkonin
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 19
22.06.2010, 17:38  [ТС]     Текстовый файл #11
Напишите, пож, на С. Очень надо
JamesBlack
 Аватар для JamesBlack
36 / 36 / 3
Регистрация: 28.07.2009
Сообщений: 144
22.06.2010, 18:26     Текстовый файл #12
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
#include <fstream.h>
#include <stdio.h>
 
void main()
{
    char a, filename[] = "file.txt", tmpfile[] = "file2.txt";
    int spaces;
    FILE *f1, *f2;
    if (!(f1=fopen(filename, "rt"))) {printf("\n\nCan't read file %s!", filename); return;}
    if (!(f2=fopen(tmpfile, "wt"))) {printf("\n\nCan't create file %s!", tmpfile); return;}
    while(!feof(f1))
    {
        a = fgetc(f1);
        if (a == ' ')
        {
            spaces = 0; // kol-vo probelov
            while (a == ' ' && !feof(f1))
            // poka idut probeli, zanosim ih v fail
            {
                fputc(' ', f2);
                spaces++;
                a = fgetc(f1);
            }
            if (spaces>1) fputc('\n', f2);
            // esli bolshe 1 probela, vstavlyaem perevod na novuyu stroku
        }
        if (feof(f1)) break; // esli probeli stoyat v konce faila
        fputc(a, f2); // kopiruem simvol-ne_probel
    }
    fclose(f1); fclose(f2); // zakrivaem faili
    remove(filename); // udalyaem ishodniy fail
    rename(tmpfile, filename); // pereimenovivaem 2 fail v ishodniy
}
Вроде как чистый си. Есть замечания?

Добавлено через 2 минуты
Даже комментариев понаписал чуток
Prividenie
74 / 74 / 6
Регистрация: 05.10.2008
Сообщений: 233
22.06.2010, 19:22     Текстовый файл #13
Цитата Сообщение от JamesBlack Посмотреть сообщение
Есть замечания?
Цитата Сообщение от JamesBlack Посмотреть сообщение
#include <fstream.h>
- убрать
Цитата Сообщение от JamesBlack Посмотреть сообщение
void main()
- вдруг в учителя компилятор будет жёстко соответствовать стандарту C99 (удалит он свой borland c 3.1 ) - не покатит
JamesBlack
 Аватар для JamesBlack
36 / 36 / 3
Регистрация: 28.07.2009
Сообщений: 144
22.06.2010, 20:28     Текстовый файл #14
Цитата Сообщение от Prividenie Посмотреть сообщение
- убрать
а, ну тупо забыл библиотеку не используемую убрать ^__^


Цитата Сообщение от Prividenie Посмотреть сообщение
вдруг в учителя компилятор будет жёстко соответствовать стандарту C99 (удалит он свой borland c 3.1 ) - не покатит
Ты реально издеваешься?

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
#include <stdio.h>
 
void main()
{
        char a, filename[] = "file.txt", tmpfile[] = "file2.txt";
        int spaces;
        FILE *f1, *f2;
        if (!(f1=fopen(filename, "rt"))) {printf("\n\nCan't read file %s!", filename); return;}
        if (!(f2=fopen(tmpfile, "wt"))) {printf("\n\nCan't create file %s!", tmpfile); return;}
        while(!feof(f1))
        {
                a = fgetc(f1);
                if (a == ' ')
                {
                        spaces = 0; // kol-vo probelov
                        while (a == ' ' && !feof(f1))
                        // poka idut probeli, zanosim ih v fail
                        {
                                fputc(' ', f2);
                                spaces++;
                                a = fgetc(f1);
                        }
                        if (spaces>1) fputc('\n', f2);
                        // esli bolshe 1 probela, vstavlyaem perevod na novuyu stroku
                }
                if (feof(f1)) break; // esli probeli stoyat v konce faila
                fputc(a, f2); // kopiruem simvol-ne_probel
        }
        fclose(f1); fclose(f2); // zakrivaem faili
        remove(filename); // udalyaem ishodniy fail
        rename(tmpfile, filename); // pereimenovivaem 2 fail v ishodniy
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2010, 21:03     Текстовый файл
Еще ссылки по теме:

C++ Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла
дан текстовый файл.определить количество нечетных чисел и записать их в др текст файл C++
C++ Задан текстовый файл, необходимо по нему сформировать двоичный файл индексов

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

Или воспользуйтесь поиском по форуму:
harkonin
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 19
22.06.2010, 21:03  [ТС]     Текстовый файл #15
Всем спасибо за ответы!
Yandex
Объявления
22.06.2010, 21:03     Текстовый файл
Ответ Создать тему
Опции темы

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