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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 110, средняя оценка - 4.82
Elcor
2 / 2 / 0
Регистрация: 10.03.2012
Сообщений: 55
04.04.2012, 01:27     Посимвольное считывание из файла в массив int #1
Вообщем есть файл с числами(там всегда будут числа).
Примерно такого содержания
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() считывает только как текстовую информацию, а мне в дальнейшем нужно использовать именно эти значения, но они должны быть интовскими.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2012, 01:27     Посимвольное считывание из файла в массив int
Посмотрите здесь:

Считывание файла в массив и запись нового файла C++
C++ Посимвольное считывание из файла
C++ посимвольное считывание
Считывание из файла в массив C++
посимвольное считывание из файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
04.04.2012, 01:46     Посимвольное считывание из файла в массив int #2
Цитата Сообщение от Elcor Посмотреть сообщение
Не подходит, т.к. get() считывает только как текстовую информацию, а мне в дальнейшем нужно использовать именно эти значения, но они должны быть интовскими.
C++
1
mas[i]=out.get()-'0';
как-то так
Elcor
2 / 2 / 0
Регистрация: 10.03.2012
Сообщений: 55
04.04.2012, 01:53  [ТС]     Посимвольное считывание из файла в массив int #3
Нет, не работает.
Массив не заполняется.
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
04.04.2012, 03:16     Посимвольное считывание из файла в массив int #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  
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
04.04.2012, 05:09     Посимвольное считывание из файла в массив int #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');
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
04.04.2012, 09:28     Посимвольное считывание из файла в массив int #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++;
  }
Catstail
Модератор
 Аватар для Catstail
21503 / 10256 / 1670
Регистрация: 12.02.2012
Сообщений: 17,143
04.04.2012, 10:22     Посимвольное считывание из файла в массив int #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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2012, 10:33     Посимвольное считывание из файла в массив int
Еще ссылки по теме:

C++ Считывание\запись int из файла\в файл
C++ Считывание из текстового файла значения int
C++ Считывание файла в массив

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
04.04.2012, 10:33     Посимвольное считывание из файла в массив int #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;
}
Yandex
Объявления
04.04.2012, 10:33     Посимвольное считывание из файла в массив int
Ответ Создать тему
Опции темы

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