Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++]Считывание чисел в многомерный массив с файла


Автор: Robin 26.3.2008, 16:40
Условие: дан файл следующего содержания
159630579850134957896210254

необходимо считать эти числа в массив int mass[6][6]

Автор: Rififi 26.3.2008, 17:26
Код
#include <string>
#include <fstream>
#include <algorithm>

void read_nums(const std::string fileName, int* arr)
{
    std::ifstream ifs(fileName.c_str());
    std::copy(
        std::istream_iterator<int>(ifs),
        std::istream_iterator<int>(),
        arr);
}

int nums[6][6];
int* p = &nums[0][0];
memset(p, 0,  6*6);
read_nums("nums.txt", p);


- запись в массив происходит "по строкам"
- в файле должно быть не более 6*6 чисел, иначе произойдет выход за границы массива

Автор: orthrus 26.3.2008, 18:33
Цитата(Rififi @  26.3.2008,  17:26 Найти цитируемый пост)
memset(p, 0,  6*6);

здесь у вас ошибочка, надо вот так:
Код

memset(p, 0, sizeof(int)*6*6);

или вот так:
Код

memset(p, 0,  (sizeof(nums)/sizeof(nums[0][0]))*sizeof(nums[0][0]));

а то у вас обнуляется только первые 36-ть байт массива, остальные остаются заполненые фиг знает чем smile 

Автор: Rififi 26.3.2008, 18:41
orthrus
да, все верно, thanx. написал быстро, не обратил внимания (:

Автор: Robin 26.3.2008, 20:58
спасибо! 

Автор: Robin 26.3.2008, 21:26
можно тоже самое на С?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)