Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Сеня 2007
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 182
1

Считывание по 4 символа из файла

06.11.2012, 21:02. Просмотров 670. Ответов 6
Метки нет (Все метки)

Есть файл с примерны содержанием:
11000001111110000000000111111010101110
В файле находятся только 0 и 1. Нужно считать их по 4 символа в массив. Что то не приходит в голову как сделать? Через fseek? Если через него то как?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2012, 21:02
Ответы с готовыми решениями:

Считывание из текстового файла с N-ого символа
Здравствуйте! Помогите,пожалуйста, составить программу,которая считывала бы...

Считывание элементов до символа
Как считать посимвольно строку? Допустим "Математика, Физика, Химия", нужно...

Заменить считывание с клавиатуры на считывание из файла
Помогите пожалуйста, ни разу не работал со считыванием из файла поэтому не...

Считывание вещественных переменных до определенного символа
Заранее спасибо за помощь, немного подзабыл как осуществить считывание...

Считывание символа с потока для дальнейших действий
Пользователь должен по запросу ввести символ для определения операции:...

6
Sor
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
06.11.2012, 21:20 2
нашел такую штуку. считывает все инты в вектор:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <iterator>
 
int main()
{
    const std::string str = "d:\\file.txt";
    std::ifstream in(str.c_str());
 
    std::istream_iterator <int> _iter(in);
    std::istream_iterator <int> _iter2;
    std::ostream_iterator <int> _iter3(std::cout," ");
 
    std::vector <int> vec(_iter,_iter2);
    std::copy(vec.begin(), vec.end(), _iter3);
 
    system("pause");
    return 0;
}
0
Сеня 2007
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 182
06.11.2012, 21:39  [ТС] 3
Эм ничего если честно непонятно. Более традиционно никак нельзя сделать?
0
Venzo
125 / 123 / 16
Регистрация: 03.07.2011
Сообщений: 354
06.11.2012, 21:41 4
можно посимвольно прочитать в чар и все.
0
Сеня 2007
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 182
06.11.2012, 22:42  [ТС] 5
Я это понимаю что можно, как это реализовать в коде?
0
Сеня 2007
2 / 2 / 1
Регистрация: 03.10.2010
Сообщений: 182
09.11.2012, 19:19  [ТС] 6
Ввожу с файла в char:
C++
1
2
3
4
5
6
7
8
9
in=fopen(ima,"r");
    
            while(!feof(in))
            {   //for(k=0; k<kod; k++)
 
                        fscanf(in,"%s",&ch);
 
            }
         fclose(in);
Теперь пытаюсь весь массив засунуть в двумерный массив int. Вот так:
C++
1
2
3
4
5
6
7
 for(c1=0; c1<kod; c1++)
{ 
for(c3=0; c2<4 & c3<100; c2++ & c3++)
{
    mas[c1][c2]=atoi(&ch[c3]);
};
};
Только почему то все записывается в mas[0][0]. То есть не по элементно а все что было в ch одним разом. Было 1100110101 и засунулось тоже самое а не по элементно. В чем проблема?

Добавлено через 3 часа 16 минут
В чем проблема объясните пожалуйста?

Добавлено через 22 часа 35 минут
Теперь другая проблема: не могу передать в функцию указатель на двумерный массив:
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
 
void vvod_kod(char yma[100],int kod,int** mas)
{
    char ch[100];
    int c1,c2=0,c3=0;
    
    FILE* in;
    in=fopen(yma,"r");
    
            while(!feof(in))
            {   
                            fscanf(in,"%s",&ch);
 
            }
         fclose(in);
 
for(c1=0; c1<kod; c1++)
         {
         for(c2=0; c2<4 && c3<100; c2++ && c3++)
            {
    char s[2];
    s[0]=ch[c3];
    s[1]=0;
    mas[c1][c2]=atoi(s);
            };
        };
 
}
 
 
void main()
{
    setlocale (LC_ALL, "Russian");
FILE* in;
FILE* out;
int i,j ,n, m, k,l;
int kod;
int a[100];
char ima[100];
int mas[100][100];
printf("Введите имя файла: \n");
scanf("%s",ima);
printf("Введите количество кодировок: \n");
scanf("%d",&kod);
int kol;
k=0;
vvod_kod(ima,kod,**mas[100][100]);
 
         int z, u3, ip = 0, u, u2;
for(u=0; u<kod; u++)
{ printf("Кодировка %d: ",u+1);
for(u2=0; u2<4; u2++)
{   
printf("%d",mas[u][u2]);
};
printf("\n");
};
        out=fopen("ouut.txt","w");
for(u=0; u<kod; u++)
{
for(u2=0; u2<4; u2++)
{   
                    fprintf(out,"%d", mas[u][u2]);
 
    };
fprintf(out,"\n");
};
 fclose(out);
 
FILE* buf;
char imbuf[100];
printf("Введите имя файла буфера: \n");
scanf("%s",imbuf);
    getch();
}
Вопрос в том как вызвать функцию с правильным параметром?

Добавлено через 3 часа 59 минут
Помогите кто нибудь!!!
0
Sor
35 / 35 / 10
Регистрация: 24.11.2011
Сообщений: 309
09.11.2012, 19:47 7
попробуй посмотреть тут Передача двумерного массива в функцию

Добавлено через 27 минут
насколько я понял, самый простой способ преобразовать в одномерный массив и его передать
0
09.11.2012, 19:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2012, 19:47

Считывание символа с помощью функции scanf: найти и исправить ошибку в коде
Hello, world! Столкнулся с такой проблемой, как считывание символа с помощью...

Считывание файла в массив и запись нового файла
Консоль VS C++. Текстовый файл открывается как бинарный, и считывается по 100...

Считывание из файла
Создайте конструктор, который считывает координаты центра и радиус из заранее...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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