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

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

Войти
Регистрация
Восстановить пароль
 
Doctor Nano
Cандальная шляпа
42 / 42 / 10
Регистрация: 12.01.2012
Сообщений: 185
#1

Работа с файлами. Как добавить переход на новую строку при записи? - C++

19.06.2014, 17:08. Просмотров 721. Ответов 4
Метки нет (Все метки)

Задача такая, дан текстовый файл (с информацией о людях Фамилия Имя Отчество) и надо создать второй файл с записями вида «Фамилия И.О.», например, «Иванов В.С.».
Вопрос, моя программа делает то что нужно, а как так сделать чтобы в другой файл записывалось Фамилия И.О. с новой строки? Или не правильно сделал прогарамму?
Текстовый файл
Каверников Михаил Александрович
Иванов Павел Андреевич
Иванов Виктор Сергеевич

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
44
45
46
47
48
49
50
51
52
53
#include <conio.h>
#include <stdio.h>
#include <locale.h>
#include <string.h>
int main()
 
{
    setlocale(LC_ALL,"russian");
    char str[255+1];
    char data1[]="data1.txt";
    char data2[]="data2.txt";
    FILE *fid, *fid2;
    errno_t err;
    if((fopen_s(&fid,"data1.txt","r"))||
        (err=fopen_s(&fid2,"data2.txt","w"))!=0)
    {
        printf("\n\t Файл не может быть открыт.\n");
        printf("\n Нажмите любую клавишу:");
        _getch();
        return -1;
    }
    while(fgets(str,255,fid)!=NULL)
    {
        int j=-1,k=0;
        for(int i=0;i<strlen(str);i++)
            if(str[i]==' ')str[i+2]='.';
 
        for(int i=0;i<strlen(str);i++)
        {
                if(str[i]!='.' && k<2)str[++j]=str[i];
                else
                {
                    k++;
                    str[++j]=str[i];
                }
 
                if(k==1)
                {
                    for(int l=i;l<strlen(str);l++)
                        if(str[l]==' '){i=l;break;}
                }
                if(k==2 && i<strlen(str)-2)str[++j]=NULL;
 
        }
 
        fputs(str,fid2);
    }
 
    fclose(fid);
    fclose(fid2);
    printf("\n Работа закончена. Нажмите любую клавишу:");
    _getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2014, 17:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с файлами. Как добавить переход на новую строку при записи? (C++):

Переход на новую строку при записи в файл - C++
Привет всем, я пишу такую программу.. С клавиатуры вводятся две матрицы, на выбор пользователя она записывается в файл либо в виде...

Как узнать что при считывание очередного слова в string был сделан переход на новую строку в файле? - C++
подскажите пожалуйста, как узнать что при считывание очередного слова в string был сделан переход на новую строку в файле?. ПС не...

Переход на новую строку при считывании из файла - C++
Мне нужно прочитать из файла структуру Student, в которой указываются такие данные студента: фамилия, имя, отчество, пол, оценка по...

Как в файле сделать переход на новую строку - C++
Подскажите, пожалуйста, как произвести дозапись в файл с новой строки. Файл открыт через fopen

Переход на новую строку - C++
фрагмент кода запись строки в текстовый файл: fputs(stroka,f); stroka имеет значение 100110110101 без нуль символа. как перейти на...

Переход на новую строку - C++
Файл открыт в текстовом режиме. Есть строка , ее надо записать в файл, и перейти на новую строку для следующей записи. fputs(stroka,f); ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
19.06.2014, 17:12 #2
Да просто в конце каждой записи добовляте в свой str символ '\n'. Или я не правильно понял что в имели в виду?
Doctor Nano
Cандальная шляпа
42 / 42 / 10
Регистрация: 12.01.2012
Сообщений: 185
19.06.2014, 17:21  [ТС] #3
maxon887, У меня есть файл.
Текстовый файл
Каверников Михаил Александрович
Иванов Павел Андреевич
Иванов Виктор Сергеевич

И надо что бы в другой записывался именно так↓↓↓
Созданный программой текстовый файл - как должно быть
Каверников М.А.
Иванов П.А.
Иванов В.С.

А у меня выдаёт всё в одну строку.
Созданный программой текстовый файл - как получается
Каверников М.А.Иванов П.А.Иванов В.С.


И как сделать так, что бы было так как надо?
maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
19.06.2014, 17:45 #4
Ну блин)))) одну строчку только добавить))
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <conio.h>
#include <stdio.h>
#include <locale.h>
#include <string.h>
int main()
 
{
    setlocale(LC_ALL,"russian");
    char str[255+1];
    char data1[]="data1.txt";
    char data2[]="data2.txt";
    FILE *fid, *fid2;
    errno_t err;
    if((fopen_s(&fid,"data1.txt","r"))||
        (err=fopen_s(&fid2,"data2.txt","w"))!=0)
    {
        printf("\n\t Файл не может быть открыт.\n");
        printf("\n Нажмите любую клавишу:");
        _getch();
        return -1;
    }
    while(fgets(str,255,fid)!=NULL)
    {
        int j=-1,k=0;
        for(int i=0;i<strlen(str);i++)
            if(str[i]==' ')str[i+2]='.';
 
        for(int i=0;i<strlen(str);i++)
        {
                if(str[i]!='.' && k<2)
                    str[++j]=str[i];
                else
                {
                    k++;
                    str[++j]=str[i];
                }
 
                if(k==1)
                {
                    for(int l=i;l<strlen(str);l++)
                    {
                        if(str[l]==' ')
                        {
                            i=l;
                            break;
                        }
                    }
                }
                if(k==2 && i<strlen(str)-2)
                    str[++j]=NULL;
        }
 
        fputs(str,fid2);
        fputc('\n', fid2);      //ВОТ ЭТУ
    }
 
    fclose(fid);
    fclose(fid2);
    printf("\n Работа закончена. Нажмите любую клавишу:");
    _getch();
}
Doctor Nano
Cандальная шляпа
42 / 42 / 10
Регистрация: 12.01.2012
Сообщений: 185
19.06.2014, 17:51  [ТС] #5
Цитата Сообщение от maxon887 Посмотреть сообщение
C++
1
fputc('\n', fid2);
Только эту? А я тут сижу, думаю, как подойти к решению.
Спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2014, 17:51
Привет! Вот еще темы с ответами:

Переход на новую строку - C++
Вывести в 5 колонок список пятизначных нечетных симметричных чисел, (например 34543 или 70507). Ширина колонки должна быть равна 7...

Переход на новую строку - C++
Доброго времени суток! у меня такая проблема: у меня стоит visual C++ 2008 и я не могу перейти на новую строку. Пробывал с помощью \r\n и...

Переход на новую строку - C++
Что не так? #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { int N; string S; cout &lt;&lt; &quot;vvedite...

переход на новую строку - C++
подскажите пожалуйста есть задача надо откоректировать текс так что бы в каждом рядку было до N символов вот пока до чего я дошол for(...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.06.2014, 17:51
Ответ Создать тему
Опции темы

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