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

Странная ошибка в алгоритме заполнения массива из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выделить память под массив размера 2^64 байтов http://www.cyberforum.ru/cpp-beginners/thread1218464.html
Требуется выделить память под массив размера 2^64 байтов. Как порекомендуете решать данную задачу?
C++ почему при возврате объекта из метода исчезает поле с динамической памятью При выходе из метода оператора + динамическая память, которая хранится в объекте класса Vector исчезает. Как исправить эту ситуацию? Подскажите, пожалуйста. Vector.h #pragma once #include <malloc.h> #include <iostream> http://www.cyberforum.ru/cpp-beginners/thread1218461.html
C++ Ошибка в элементарной программе
Написал в visual studio 2012 следующее: #include <cstdio> #include <cstdlib> #include <conio.h> using namespace std; int main() {
C++ Убрать "\n" из строки
Сначала я записываю в файл массив структур в цикле for (int i = 0; i < ttl; i++) { fprintf(f, "%s\n%s\n%s\n", film.name, film.genre, film.year); } Далее мне нужно сканировать этот файл и вывести в консоль: while (fgets(buf, max, f) != NULL) { if (j < 3) { if (j == 0) { film.name = new char; strcpy(film.name, buf);
C++ Обфускация компилируемых исходных кодов http://www.cyberforum.ru/cpp-beginners/thread1218393.html
Хотелось бы поподробнее узнать по поводу обфускации компилируемых исходных кодов. Вот, например, есть обфускатор Stunnix C++, (да и не только он, но просто как пример) который преобразовывает некоторые части кода в запутанный к примеру числа преобразовывает в (0x5e1 + 5967 - 0x1d30) - это выражение равно нулю а строковые переменные заменяет \x## хекс-записью например...
C++ В двумерном массиве найти сумму положительных элементов в каждой строке Написать программу для решения следующей задачи. В двумерном массиве найти сумму положительных элементов в каждой строке. При работе с массивом использовать указатели. подробнее

Показать сообщение отдельно
Gelo123321
 Аватар для Gelo123321
21 / 21 / 4
Регистрация: 05.01.2012
Сообщений: 279
Завершенные тесты: 1
27.06.2014, 17:47     Странная ошибка в алгоритме заполнения массива из файла
Алгоритм приведенный ниже, на самом деле является частью функции, которая работает некорректно. По этому я решил переделать алгоритм в консольный вариант, что бы протестировать (так как я не был уверен что баг именно в этой функции, а не в другой).

Файл map1.map содержит числа, 0 и 1. Сама программа при выполнении выводит только первые 13 строк массива (причем в первой строке последний символ не 1, как в файле, а 31). работу программы прерывает ошибка (точнее окно с надписью: "Information"), вот текст сообщения: "Project C:\...\Project1.exe faulted with message: 'access violation at 0x0040337a: read of address 0x00000009'. Process Stopped. Use Step or Run to continue."Причем в C++ Builder 6, открывается вкладка библиотеки ios: _ios_base.h.

Самое странное то, что функция с данным алгоритмом которая помещена в dll - работает. То есть, по крайней мери она вызывается без ошибок. Хотя массив заполненный ею все же ведет себя странно... Что в данном алгоритме не так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    string path = "Map/map1.map";
    int array[32-1][32-1];
 
    int x = 0, y = 0;
    ifstream file(path);
 
    if (!file) { cerr << "ERROR! Cant open a file."; }
    else
    {
        for (;file;)
        {
            file >> array[x][y];
            cout << array[x][y] << ' ';
            x++;
            if (file.get() == '\n') { y++; x = 0; cout << '\n'; }
            if (file.eof()) break;
        }
    }
    system("pause");
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru