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

Файловый ввод\вывод - C++

Восстановить пароль Регистрация
 
Khodal
 Аватар для Khodal
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 6
15.04.2013, 20:32     Файловый ввод\вывод #1
У меня есть файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
111111100000101111111
100000100101001000001
101110100101101011101
101110100111001011101
101110100110101011101
100000101101101000001
111111101010101111111
000000000011100000000
100101101100010100000
010011000100001101001
001100101110110000001
111110010111000111001
001110111110101010001
000000001111000001011
111111100110010110010
100000101101110000001
101110100011001100001
101110101101000111111
101110100100100111001
100000100100011110000
111111101001100111010
Оригинал во вложении.
У меня воспрос. Как его открыть и ввести его в масив. Только что бы в 1 ячейке было 1 число (1или0), и не строковым типом, а чисельным.


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
#include <stdio.h>
#include <string.h>
 
 
int main ()
{
 
        FILE *file;
        char *fname = "in.txt";
        file = fopen(fname,"r");
        int a=0,i,j=0;
        char Ar[21][21];
        int Br[21][21];
        char vh[200],lol[500];
 
            if(file == 0){ 
                    printf("Doesent exist '%s'",fname);
                    return 0;
        }
 
     
        while(fgets(vh,sizeof(vh),file)){
            strcat(lol,vh);
            }
 
            //перегонка змінної в масив
        for (i=0;i<21;i++){
            for (j=0;j<21;j++){
                            if(lol[a] == '\n'){
                                a++;
                                            }
                            Ar[i][j]=lol[a];
                            a++;
            }
        }
 
for(i=0;i<21;i++)
{
    for(j=0;j<21;j++){
        printf("%c",Ar[i][j]);
    }
    printf("\n");
}
 
 
 
        fclose(file);
getchar();
return 0;
}
Вложения
Тип файла: txt in.txt (481 байт, 5 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
15.04.2013, 23:00     Файловый ввод\вывод #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
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <cstdlib>
 
typedef std::istream_iterator<int> ii;
typedef std::ostream_iterator<int> oi;
 
int main()
{
    std::ifstream in("in.txt", std::ios::in);
    if (!in)
    {
        std::cerr << "error: couldn't open file.\n";
        exit(1);
    }
 
    std::vector<int> v;
    char ch;
 
    while (!in.eof())
    {
        if (in.get(ch) && isdigit(ch))
        {
            v.push_back(ch - '0');
        }
    }
    in.close();
 
    std::copy(v.begin(), v.end(), oi(std::cout, " "));
}
Khodal
 Аватар для Khodal
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 6
16.04.2013, 19:48  [ТС]     Файловый ввод\вывод #3
Цитата Сообщение от xtorne21st Посмотреть сообщение
Кликните здесь для просмотра всего текста
Лучше для таких целей воспользоваться вектором.
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 <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <cstdlib>
 
typedef std::istream_iterator<int> ii;
typedef std::ostream_iterator<int> oi;
 
int main()
{
    std::ifstream in("in.txt", std::ios::in);
    if (!in)
    {
        std::cerr << "error: couldn't open file.\n";
        exit(1);
    }
 
    std::vector<int> v;
    char ch;
 
    while (!in.eof())
    {
        if (in.get(ch) && isdigit(ch))
        {
            v.push_back(ch - '0');
        }
    }
    in.close();
 
    std::copy(v.begin(), v.end(), oi(std::cout, " "));
}
Пожалуйста, обьясните мне как оно работает?
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
17.04.2013, 00:28     Файловый ввод\вывод #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
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <cstdlib>
 
typedef std::istream_iterator<int> ii; // Для уменьшения громоздких выражений
typedef std::ostream_iterator<int> oi;
 
int main()
{
    std::ifstream in("in.txt", std::ios::in); // открываем файл
    if (!in) // проверяем на корректное открытие
    {
        std::cerr << "error: couldn't open file.\n";
        exit(1);
    }
 
    std::vector<int> v; // создаём вектор (альтернатива динамического массива)
    char ch;
 
    while (!in.eof()) // будем выполнять действия, пока не встретиться конец файла
    {
        if (in.get(ch) && isdigit(ch)) // если чтения символа в ch прошло успешно, а также если этот символ цифра...
        {
            v.push_back(ch - '0'); // добавить в вектор значение ch минус символ '0' (автоматическое преобразование в int)
        }
    }
    in.close(); // закрыть файл
 
    std::copy(v.begin(), v.end(), oi(std::cout, " ")); // скопировать результат в поток cout (на консоль)
}
Yandex
Объявления
17.04.2013, 00:28     Файловый ввод\вывод
Ответ Создать тему
Опции темы

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