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

два файла в один - C++

Восстановить пароль Регистрация
 
Chekist008
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 9
30.05.2010, 10:50     два файла в один #1
При решении задачи с толкнулся с проблемой. Как содержимое двух текстовых файлов перенести в третий?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
30.05.2010, 14:04     два файла в один #2
как-то так. Может немного не хватает, но там сами допишите.
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
#include <stdio.h>
#include <stdlib.h>
 
       
#define FIN1_NAME "in1.txt"
#define FIN2_NAME "in2.txt"
#define FOUT_NAME "out.txt"
 
int main(void){
        FILE *fin1, *fin2, *fout;
        double val1, val2;
        
        if ( ( fin1 = fopen(FIN1_NAME, "r") ) == NULL ){
                perror("fopen");
                exit(1);
        }
        if ( ( fin2 = fopen(FIN2_NAME, "r") ) == NULL ){
                perror("fopen");
                exit(1);
        }
 
        if ( ( fout = fopen(FOUT_NAME, "w") ) == NULL ){
                perror("fopen");
                if ( fclose(fin) )
                        perror("fclose");
                exit(1);
        }
        if ( fscanf(fin1, "%lf", &val1)  ){
                perror("fscanf");
                if ( fclose(fin1) )
                        perror("fclose");
                if ( fclose(fout) )
                        perror("fclose");
                exit(1);
        }
    if ( fscanf(fin2, "%lf", &val2)  ){
                perror("fscanf");
                if ( fclose(fin2) )
                        perror("fclose");
                if ( fclose(fout) )
                        perror("fclose");
                exit(1);
        }
        if ( fprintf(fout, "%.1f\n%.1f\n", val1, val2)  ){
                perror("fout");
                if ( fclose(fin1) )
                        perror("fclose");
        if ( fclose(fin2) )
                        perror("fclose");
                if ( fclose(fout) )
                        perror("fclose");
                exit(1);
        }
 
        printf("Operation complete!\n\n");
 
        exit(0);
}
Ангедония
 Аватар для Ангедония
4 / 4 / 1
Регистрация: 21.11.2009
Сообщений: 75
30.05.2010, 15:10     два файла в один #3
а можно этот алгоритм применить к вот этому?


http://www.cyberforum.ru/cpp-beginne...ead137522.html
Chekist008
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 9
30.05.2010, 15:17  [ТС]     два файла в один #4
благодарю за помощь
Ангедония
 Аватар для Ангедония
4 / 4 / 1
Регистрация: 21.11.2009
Сообщений: 75
30.05.2010, 19:01     два файла в один #5
Цитата Сообщение от Ангедония Посмотреть сообщение
а можно этот алгоритм применить к вот этому?


http://www.cyberforum.ru/cpp-beginne...ead137522.html
и ещё раз
Chekist008
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 9
31.05.2010, 08:35  [ТС]     два файла в один #6
Bloodykeeper, а как мне теперь указать адреса файлов в такой ситуации?
и какой компилятор вы использовали?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
31.05.2010, 11:10     два файла в один #7
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
if ( fscanf(fin1, "%lf", &val1) ){
Функции семейства scanf() возвращают количество прочитанных и присвоенных значений. То есть в таком виде, если переменная будет прочитана из файла, fscanf() вернёт 1, условие будет истинным. А у Вас
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
perror("fscanf");
Chekist008
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 9
31.05.2010, 15:02  [ТС]     два файла в один #8
easybudda, может тогда вы ответите на поставленый вопрос?и как при этом сделать так чтоб можно было указать адрес файлов?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
31.05.2010, 15:28     два файла в один #9
Цитата Сообщение от Chekist008 Посмотреть сообщение
может тогда вы ответите на поставленый вопрос?
Язык программирования укажите.
Chekist008
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 9
31.05.2010, 15:41  [ТС]     два файла в один #10
easybudda, C или C++, просьба ещё указывать компилятор которым вы пользуетесь если можно, а то не раз сталкивался с проблемой отсутствия некоторых вещей
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
31.05.2010, 16:32     два файла в один #11
Chekist008, если особо не заморачиваться, то вот
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#ifndef MAX_PATH
#define MAX_PATH 1024
#endif
 
int main(void){
    FILE *fin1, *fin2, *fout;
    char buf[BUFSIZ], nFin1[MAX_PATH], nFin2[MAX_PATH], nFout[MAX_PATH], *p;
 
    printf("First input file: ");
    if ( ! fgets(nFin1, MAX_PATH, stdin) ){
        perror("fgets");
        exit(EXIT_FAILURE);
    }
    if ( p = strrchr(nFin1, '\n') )
        *p = '\0';
    if ( ! *nFin1 ){
        fprintf(stderr, "Empty strings not allowed!\n");
        exit(EXIT_FAILURE);
    }
 
    printf("Second input file: ");
    if ( ! fgets(nFin2, MAX_PATH, stdin) ){
        perror("fgets");
        exit(EXIT_FAILURE);
    }
    if ( p = strrchr(nFin2, '\n') )
        *p = '\0';
    if ( ! *nFin2 ){
        fprintf(stderr, "Empty strings not allowed!\n");
        exit(EXIT_FAILURE);
    }
 
    printf("Output file: ");
    if ( ! fgets(nFout, MAX_PATH, stdin) ){
        perror("fgets");
        exit(EXIT_FAILURE);
    }
    if ( p = strrchr(nFout, '\n') )
        *p = '\0';
    if ( ! *nFout ){
        fprintf(stderr, "Empty strings not allowed!\n");
        exit(EXIT_FAILURE);
    }
 
    if ( ( fout = fopen(nFout, "w") ) == NULL ){
        perror("fopen");
        exit(EXIT_FAILURE);
    }
 
    if ( ( fin1 = fopen(nFin1, "r") ) == NULL ){
        perror("fopen");
        exit(EXIT_FAILURE);
    }
 
    while ( fgets(buf, BUFSIZ, fin1) ){
        if ( fputs(buf, fout) == EOF ){
            perror("fputs");
            exit(EXIT_FAILURE);
        }
    }
    if ( ferror(fin1) ){
        perror("ferror");
        exit(EXIT_FAILURE);
    }
    fclose(fin1);
 
    if ( ( fin2 = fopen(nFin2, "r") ) == NULL ){
        perror("fopen");
        exit(EXIT_FAILURE);
    }
    while ( fgets(buf, BUFSIZ, fin2) ){
        if ( fputs(buf, fout) == EOF ){
            perror("fputs");
            exit(EXIT_FAILURE);
        }
    }
    if ( ferror(fin2) ){
        perror("ferror");
        exit(EXIT_FAILURE);
    }
    fclose(fin2);
 
    fclose(fout);
    printf("Done.\n");
    exit(EXIT_SUCCESS);
}
Chekist008
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 9
31.05.2010, 23:05  [ТС]     два файла в один #12
easybudda, благодарю, именно то что нужно
Ангедония
 Аватар для Ангедония
4 / 4 / 1
Регистрация: 21.11.2009
Сообщений: 75
02.06.2010, 17:18     два файла в один #13
easybudda,а можно поинтересоваться ,что значит следущее из вашего алгоритма:

C
1
2
3
#ifndef MAX_PATH
#define MAX_PATH 1024
#endif
а всё остальное применимо к С++?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
02.06.2010, 17:30     два файла в один #14
Ангедония, константа MAX_PATH задаёт максимальную длинну имени файла. В некоторых компиляторах она уже определена, в других - нет. Вот по этому сначала проверяется, определена ли такая, если нет - определить её...

Цитата Сообщение от Ангедония Посмотреть сообщение
а всё остальное применимо к С++?
Вся программа "как есть" компилируется, как С++ программа. Но за чем? На С++ она бы немного не так выглядела...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2010, 17:40     два файла в один
Еще ссылки по теме:

Как в проэкт запихать два срр-файла (один вызывает другой) C++
C++ Из одного файла данных получить два массива (один с числами, другой - с буквами)
Слить один два файла в один C++

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

Или воспользуйтесь поиском по форуму:
Ангедония
 Аватар для Ангедония
4 / 4 / 1
Регистрация: 21.11.2009
Сообщений: 75
02.06.2010, 17:40     два файла в один #15
спасибо большое)не могли бы вы помочь ещё с этим?
http://www.cyberforum.ru/cpp-beginne...ead137874.html
Yandex
Объявления
02.06.2010, 17:40     два файла в один
Ответ Создать тему
Опции темы

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