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

Загрузка динамического массива и матрицы из файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Циклы с неизвестным числом повторений http://www.cyberforum.ru/cpp-beginners/thread1040903.html
Помогите с задачкой пожалуйста y=1+(1+x)+\frac{(1+x{)}^{2}}{2!}+\frac{(1+x{)}^{3}}{3!}+...
C++ Найти количество элементов главной диагонали c++ Надо найти количество элементов главной диагонали .лежащей вне интервала.матрица а http://www.cyberforum.ru/cpp-beginners/thread1040887.html
C++ программа на одномерный массив
Мне требовалось найти количество нулевых элементов массива,сумму положительных элементов массива,поменять местами 2 и 10 элементы. // Laboratornaa.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <stdio.h> #include <iostream> using std::cout; using std::cin; using std::endl; using namespace std;
Выполнить задачу с использованием рекурсии C++
Есть одномерный массив длиной N, заполненный числами от -10 до 10. Найти максимальную сумму, если можно брать следующий элемент, или через один. Я не могу понять как правильно её организовать%-) #include <iostream> #include <conio.h> using namespace std; int S(int n, int a,int rez){ cout << n << endl; if (a>a){ rez = a + S((n - 1), a,rez); } else rez = a + S((n - 2),a,rez); cout <<...
C++ создать класс ArrayOfInt - массив целых чисел http://www.cyberforum.ru/cpp-beginners/thread1040875.html
Разработать класс ArrayOfInt - массив целых чисел
C++ list<map> добавление элемента Подскажите пожалуйста, как добавить элемент в list<map>. Заранее спасибо. подробнее

Показать сообщение отдельно
Jack Wade
62 / 35 / 6
Регистрация: 24.02.2013
Сообщений: 250

Загрузка динамического массива и матрицы из файла - C++

14.12.2013, 12:43. Просмотров 607. Ответов 13
Метки (Все метки)

Здравствуйте!
Мне нужна помощь в считывании чисел из файла в массив указателей на int.
В краце-я хочу, чтобы из файла программа загружала сразу в динамический массив.
Сперва, я открываю файл в переменную указатель на файл(FILE*). После этого, я выполняю проход по всем строкам файла. Чтобы перейти к новой троке, я заношу значение из текущей в int* temp(используя функцию fscanf). Это я делаю для того, чтобы узнать размерность массива(кол-ство элементов). При каждом выполнении fscanf я наращиваю переменную по указателю int* size((*size)++). После того, как программа прошла по всему файлу, программа закрывает файл FILE*, после чего открывает его заново(т.к. после while(!feof(file)) программа дошла до конца файла, а читать массив надо с начала). Далее, я создаю(выделяю память) под массив int* mas=new int[(*size)](размерность массива находится по указателю *size).
Однако, проблема начинается тогда, когда я пытаюсь записать из файла в массив.
Когда я пытаюсь записать в массив элемент, оно, как я понимаю, ничего не записывает в массив.
Я выполняю запись в массив след. образом:
Кликните здесь для просмотра всего текста

C++
1
2
3
4
while (!feof(file))
{
fscanf(file, "%d", &mas[(*temp)++]);/* *temp - ссылка на int, которая при каждом проходе наращивается на 1-цу, дабы перейти к след. элементу*/
}

Однако, при выводе массива:
Кликните здесь для просмотра всего текста

C++
1
2
3
4
for (int I=0; I<(*size); I++)
{
printf("[%3d] = %3d\n", I+1, mas[I]);
}

Программа вводит числа, на подобии -868050... т.е. те, которые по умолчанию, занесены в элементы массива(наименьшее число int).
В чём может быть проблема?
Вот весь код программы(точнее сценария case 9):
Кликните здесь для просмотра всего текста

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
printf("Введите путь к файлу для загрузки\nПример пути = C:\\\\file.txt\n");
_gettchar();
gets(file_way);
printf("Был введён след. путь для загрузки = %s\n", file_way);
system("pause");
system("cls");
if (finish_file=fopen(file_way, "r"))
{
int* mas=NULL;
int* size=new int;
int* temp=new int;
*size=0;
*temp=0;
while(!feof(finish_file))
{
fscanf(finish_file, "%d", &*temp);
(*size)++;
}
fclose(finish_file);
mas=new int[*size];
if (finish_file=fopen(file_way, "r"))
{
while(!feof(finish_file))
{
if (fscanf(finish_file, "%d", &mas[(*temp)++]))
{
printf("Элемент был загружен успешно!\n");
} else printf("Ошибка загрузки элемента массива\n");
}
fclose(finish_file);
for (int i=0; i<(*size); i++) { printf("[%3d] = %3d\n", i+1, mas[i]); _gettch(); }
} else printf("Ошибка загрузки файла!\n");
delete[] mas;
delete size;
delete temp;
} else printf("Файл не был загружен!\n");
system("pause");
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru