Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 19

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

21.06.2010, 17:42. Показов 1716. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите сделать прогу на С


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

Во всем тексте вставить переход на новую строку там, где есть два Или больше пробела подряд
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.06.2010, 17:42
Ответы с готовыми решениями:

Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл
Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый...

Текстовый файл UTF-8 сохранить как текстовый файл ANSI
Есть текстовый файл в UTF-8 Нужно рядом сохранить его же, но в ANSI Как сделать это средствами c++? Среда Visual Studio 2010 ...

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

14
33 / 33 / 5
Регистрация: 16.11.2009
Сообщений: 207
21.06.2010, 19:11
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 секунду
не компилил, скорее много ошибок, но суть верна
1
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 19
21.06.2010, 23:57  [ТС]
Спасибо большое!
0
 Аватар для JamesBlack
46 / 46 / 5
Регистрация: 28.07.2009
Сообщений: 144
22.06.2010, 02:00
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;
}
1
10 / 10 / 2
Регистрация: 17.06.2010
Сообщений: 107
Записей в блоге: 1
22.06.2010, 13:29
Цитата Сообщение от 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
1
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
22.06.2010, 14:27
Цитата Сообщение от harkonin Посмотреть сообщение
Помогите сделать прогу на С
JamesBlack, Очень интересно! Но человек попросил на Си написать
1
 Аватар для JamesBlack
46 / 46 / 5
Регистрация: 28.07.2009
Сообщений: 144
22.06.2010, 16:47
FireNovel, "на си" - это на borland c 3.1, у нас в россии преподы именно это понимают. А borlandC по сути среда поддерживающая C++, просто библиотеки немного другие. В любом случае, я уверен на 100% что препод это примет. И как минимум, эта программа - рабочая по сравнению с предлагаемой выше


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

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

Не по теме:

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

1
 Аватар для JamesBlack
46 / 46 / 5
Регистрация: 28.07.2009
Сообщений: 144
22.06.2010, 17:02
Prividenie, неужели все так ужасно? Ну, в принципе можно на Си все перелопатить, если надо
Так надо? Переделать?
1
74 / 73 / 25
Регистрация: 05.10.2008
Сообщений: 233
22.06.2010, 17:03

Не по теме:

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


сам я gwbasic предпочитаю
1
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 19
22.06.2010, 17:38  [ТС]
Напишите, пож, на С. Очень надо
0
 Аватар для JamesBlack
46 / 46 / 5
Регистрация: 28.07.2009
Сообщений: 144
22.06.2010, 18:26
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 минуты
Даже комментариев понаписал чуток
2
74 / 73 / 25
Регистрация: 05.10.2008
Сообщений: 233
22.06.2010, 19:22
Цитата Сообщение от JamesBlack Посмотреть сообщение
Есть замечания?
Цитата Сообщение от JamesBlack Посмотреть сообщение
#include <fstream.h>
- убрать
Цитата Сообщение от JamesBlack Посмотреть сообщение
void main()
- вдруг в учителя компилятор будет жёстко соответствовать стандарту C99 (удалит он свой borland c 3.1 ) - не покатит
1
 Аватар для JamesBlack
46 / 46 / 5
Регистрация: 28.07.2009
Сообщений: 144
22.06.2010, 20:28
Цитата Сообщение от 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
}
1
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 19
22.06.2010, 21:03  [ТС]
Всем спасибо за ответы!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.06.2010, 21:03
Помогаю со студенческими работами здесь

Файл: Скопировать текст в другой текстовый файл файл, но чётные строки должны быть с большой буквы...
Создать текстовый файл. Скопировать текст в другой текстовый файл файл, но чётные строки должны быть с большой буквы, а нечетные с...

Даны натуральное , символьный файл и текстовый файл . Файл содержит 30 слов , каждое из которых будем называть ключевым
Добрый день, помогите пожалуйста сделать вот такую программу. Даны натуральное k , символьный файл f и текстовый файл f1 . Файл f...

Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл согласно своему варианту. Dev C++
8)В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра.

Текстовый файл перевести в двоичный, а потом полученный двоичный файл перевести обратно в текстовый
Всем привет. Есть такая задачка: &quot;текстовый файл перевести в двоичный, а потом полученный двоичный файл перевести обратно в текстовый&quot;...

Скопировать текстовый файл в новый файл, заменив в каждой строке слова «ok» на «*»
Прошу помочь с задачей.Теории не было, сразу практика.Должны своими мозгами , но моих не хватает. Это последняя задача и завтра зачет.=/ ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru