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

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

Восстановить пароль Регистрация
 
sandora
12 / 12 / 0
Регистрация: 10.02.2011
Сообщений: 42
03.03.2011, 23:31     Залить два файла в один #1
пока такое вот написал, не знаю как зделать так штоб елементы которые есть в первом и втором файле не записывались по два раза, тоесть если "1" есть в первом файле, то штоб с второго файла "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
#include <iostream>
using namespace std;
 
int main()
{
    FILE *f1, *f2;
 
    f1 = fopen( "C:\\1.txt", "a");
    f2 = fopen( "C:\\2.txt", "r");
 
    char ch;
 
    while ( (ch = getc(f2)) != EOF )
    {
        putc ( ch, f1 );
    }
 
    fclose (f1);
    fclose (f2);
 
    system("pause");
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.03.2011, 03:23     Залить два файла в один #2
C++
1
char ch;
C++
1
int ch;
загрузи данные в память, потом из памяти сохраняй в файл, проводя поиск
sandora
12 / 12 / 0
Регистрация: 10.02.2011
Сообщений: 42
06.03.2011, 00:33  [ТС]     Залить два файла в один #3
вот што вышло с етого всего, теперь в первый файл дописывает елементы второго, если их количество в первом и втором одинаковое, а если больше или меньше то прога работает некоректно помогите плиз((

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
#include <iostream>
#include <stdio.h>
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "Russian");
 
        FILE *f1, *f2;
 
        int n = 0, m = 0;
 
        cout<<"елементов в файле № 1 =";
        cin>>n;
        cout<<"\nелементов в файле № 2 =";
        cin>>m;
 
        char *F1 = new char[n+1];
        char *F2 = new char[m+1];
        char ch; 
        int i=0, j=0;
 
                f1 = fopen( "C:\\1.txt", "a+");
        f2 = fopen( "C:\\2.txt", "a+");
        
        do
        {
            ch = fgetc (f1);
            F1[i] = ch;
            i++;
        }
        while (ch != EOF);
 
        do
        {
            ch = fgetc (f2);
            F2[j] = ch;
            j++;
        }
        while (ch != EOF);
 
        for (int i = 0; i <= n;)
        {
            for (int j = 0; j <= m; j++)
            {
                if (F1[i] == F2[j]) i++;
                else
                    {
                        fprintf (f1,"%c", F2[j]);
                        i++;
                        }
            }
        }
        
        
        fclose (f1);
        fclose (f2);
 
        delete []F1;
        delete []F2;
 
        system("pause");
 
        return 0;
}
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
06.03.2011, 04:37     Залить два файла в один #4
много ошибок
C++
1
2
3
4
5
6
7
                do
                {
                        ch = fgetc (f1);
                        F1[i] = ch;
                        i++;
                }
                while (ch != EOF);
и что будет, если первый же символ EOF ?

не называй переменный большими буквами, большие буквы используются для констант
вот EOF - это константа, NULL - это константа, LC_ALL - это константа
эти константы определены через #define

ещё раз прочитай сообщение
если ты читаешь через getc()/fgetc() чего-нибудь, то она может возвращать как EOF, так и 0xFF - вещи, которые в char'е превращаются в одно и то же

вот это вот
C++
1
fprintf (f1,"%c", F2[j]);
вообще можно записать как putc(F2[j], f1);
sandora
12 / 12 / 0
Регистрация: 10.02.2011
Сообщений: 42
06.03.2011, 10:45  [ТС]     Залить два файла в один #5
Цитата Сообщение от accept Посмотреть сообщение
и что будет, если первый же символ EOF ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
do
        {
            ch = fgetc (f1);
            if (i ==0 && ch == EOF)
                {
                    cout<<"result is in file № 2";
                    return 0;
                    }
            F1[i] = ch;
            i++;
        }
        while (ch != EOF);
Цитата Сообщение от accept Посмотреть сообщение
ещё раз прочитай сообщение
поставил
C++
1
int ch;

Цитата Сообщение от accept Посмотреть сообщение
вот это вот

C++
1
fprintf (f1,"%c", F2[j]);
исправил

но как зделать етот код под файлы с разным количеством елементов, м?
Yandex
Объявления
06.03.2011, 10:45     Залить два файла в один
Ответ Создать тему
Опции темы

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