2 / 2 / 0
Регистрация: 10.03.2012
Сообщений: 55
1

Посимвольное считывание из файла в массив int

04.04.2012, 01:27. Показов 18053. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вообщем есть файл с числами(там всегда будут числа).
Примерно такого содержания
11000011000011000011
11000011000011000011
11000011000011000011
11000011000011000011
11000011000011000011
11000011000011000011
Нужно по символьно считать все цифры в интовский массив, такое
C++
1
2
3
4
int mas[size];
ifstream out("text.txt")
for(int i=0; i<size; i++)
out.get(mas[i]);
Не подходит, т.к. get() считывает только как текстовую информацию, а мне в дальнейшем нужно использовать именно эти значения, но они должны быть интовскими.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2012, 01:27
Ответы с готовыми решениями:

Посимвольное считывание с файла и запись в массив
Всем привет, подскажите, правильно ли я выполняю посимвольное(Нужно считывать, не зная заранее...

Посимвольное считывание из файла в char-массив
Делал что-то похожее : AnsiString str; char s; Form1-&gt;Memo1-&gt;Lines-&gt;LoadFromFile(имя файла);...

Считывание из файла в массив string и int
Не могу вставить позицию разделителя после определения числовой переменной. Вылетает с ошибкой...

Посимвольное считывание файла
Как считать файл посимвольно? Файл состоит из 1-й строки и включает в себя цифры разделённые...

7
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
04.04.2012, 01:46 2
Цитата Сообщение от Elcor Посмотреть сообщение
Не подходит, т.к. get() считывает только как текстовую информацию, а мне в дальнейшем нужно использовать именно эти значения, но они должны быть интовскими.
C++
1
mas[i]=out.get()-'0';
как-то так
0
2 / 2 / 0
Регистрация: 10.03.2012
Сообщений: 55
04.04.2012, 01:53  [ТС] 3
Нет, не работает.
Массив не заполняется.
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
04.04.2012, 03:16 4
Elcor, пробуйте считывать сначала в массив char-ов ,
а из массива char-ов в массив int -ов
C++
1
2
3
4
5
6
    char arr[256];
    int mas[size];
ifstream out("text.txt")
for(int i=0; i<size; i++){
out >> arr[i];
mas[i] = (arr[i] - '0');}
Вот что у мну получилось
Содержимое массива int mas[]
Миниатюры
Посимвольное считывание из файла в массив int  
1
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
04.04.2012, 05:09 5
C++
1
mas[i]=out.get()-'0';
get не подойдет так как он считывает пробелы, табуляцию и символы новой строки

Добавлено через 1 час 38 минут
Даже одного символа хватит
C++
1
2
3
4
5
6
char sym;
    int mas[size];
ifstream out("text.txt")
for(i = 0;i < size;i++){
                out >> sym;
                  mas[i] = (sym - '0');
1
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
04.04.2012, 09:28 6
Цитата Сообщение от MrCold Посмотреть сообщение
get не подойдет так как он считывает пробелы, табуляцию и символы новой строки
Они тоже имеют свои коды =) Можно потом их зачистить. Или сразу вот так:
C++
1
2
3
4
5
 while (i<size)
  {
   mas[i]=(out.get()-'0');
   if (mas[i]<10 && mas[i]>=0) i++;
  }
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36513 / 19818 / 4152
Регистрация: 12.02.2012
Сообщений: 32,949
Записей в блоге: 13
04.04.2012, 10:22 7
Вот так немного по-детски, но работает...
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
#include "stdio.h"
 
int main(int argc, char* argv[])
{
 
    char intBuf[2000];
    int  i,j;
    char buf[200];
 
    FILE *finp;
 
    if (finp=fopen("test.txt","r"))
    {
        
        for (i=0; i<= 1999; i++)intBuf[i]=0;
 
        j=0;
 
        while(1)
        
        {
          for (i=0; i<=199; i++) buf[i]=0;
          
          if (fscanf(finp,"%s",buf)==EOF) break;
          
          for (i=0; i<=199; i++)
          {
              if (buf[i]==0) break;
              intBuf[j++]=buf[i]-'0';
          }
        }
 
        for (i=0; i<=j; i++) printf("%d-th element =%d\n",i,intBuf[i]);
 
        fclose(finp);
 
    }
    else
        printf("Cannot open file\n");
 
    scanf("%d",&i);
 
    return 0;
}
0
Эксперт С++
5040 / 2619 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
04.04.2012, 10:33 8
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    FILE *file = NULL;
    int i, data[256] = { 0 };
 
    if ((file = fopen("file.txt", "r")) == NULL) {
        fprintf(stderr, "can't open file\n");
        return EXIT_FAILURE;
    }
 
    for (i = 0; i < 256 && fscanf(file, "%1d", &data[i]) == 1; ++i)
        ;
    
    while (i--) {
        printf("%d, ", data[i - 1]);
    }
 
    fclose(file);
    return EXIT_SUCCESS;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2012, 10:33
Помогаю со студенческими работами здесь

Посимвольное считывание из файла.
Как по символьно считывать данные из файла? Добавлено через 32 минуты или это сделать не...

Посимвольное считывание из файла
Добрый вечер уважаемые формучане. Помогите найти ошибку в коде программы, реализующей алгоритм...

Посимвольное считывание из файла
Нужно считать данные из файла посимвольно, при этом не все подряд, а, например из 1й строчки с 5...

Посимвольное считывание из файла
Суть задачи в следующем: В одном файле имеется 5 целых чисел, в другой файл нужно записать сумму...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru