Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2

Не получается глобально...

13.11.2011, 12:53. Показов 782. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Сразу к вопросу.
Вот написала вот такой код чтения числа из бинарного файла, все прекрасно работает, но вопрос вот в чем, почему когда я пытаюсь записать инструкцию fileName[32][0] = "data.bin"; не в майне, а в глобальных объявлениях, происходит ошибка.
Вот программа:

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
#include <iostream>
#include <stdio.h>
 
void Load( const char* fileName );
 
int i;
FILE* file;
const char* fileName[32][256]; // 256 шт и все по 32
//----->  хочу поставить здесь fileName[32][0] = "data.bin";
 
//---------------------------------------
// Name: main()
// Desc: main, функция main...
//---------------------------------------
int main(int argc, char *argv[] )
{
    fileName[32][0] = "data.bin"; // как убрать из майна?
 
    Load( fileName[32][0] );
 
    system( "pause" );
    return 0;
}
 
//---------------------------------------
// Name: Load()
// Desc: открывает бин.файл, читает в
//       нем число и выводит на экран
//---------------------------------------
void Load( const char* fileName )
{
    file = fopen( fileName, "rb");
    fread( &i, sizeof(int), 1, file );
    printf( "%i \n", i );
    fclose( file );
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.11.2011, 12:53
Ответы с готовыми решениями:

Глобально о сервере
Приветствую. Хочу попросить помощи у знающих. Темку так назвал, т.к. думаю что вопросов будет много. Итак. Имеется два сервера hp...

Публикация 1С:8.3 глобально
Всем доброго дня! Стоит виндовс 7 x64. Доустановил компоненты ISS. Разрешил 32-разрядные приложения в пуле приложений. Установил...

Глобально о cookie !!!
Я столкнулся с не понятной мне проблемой. Всем вам известно что такое интернет сервисы по подсчёту статистики в дальней СЧЁТЧИКИ. так вот...

8
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
13.11.2011, 13:35
В общем тут сложно объяснить, но суть в том, что инициализация глобальных переменных должна быть в той же строке, что и объявление. Например:
C++
1
2
3
//global scope
int i;
i=5;
привет к такой же ошибки, как у тебя.
а так:
C++
1
2
//global scope 
int i = 5;
будет правильно.
Если в двух словах, то компилятор делает отдельную функцию для инициализации глобальных переменных. Сначала он видит строку
C++
1
const char* fileName[32][256];
и видит, что массиву не присвено ни каких значений, поэтому он создает код для заполнения массива нулями (глобальные переменные инициализируются нулями по умолчанию). Потом видит строку:
C++
1
fileName[32][0] = "data.bin";
и тут у него случается когнитивный диссонас, он думает :"какого хера, я же только что создал функцию для заполнения этого массива нулями, что тут делает эта строка?" И ругается на нее!

Добавлено через 6 минут
Вот статья не по теме, но там есть небольшое объяснение этого момента.
1
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.11.2011, 13:42  [ТС]
А когда я вот так делаю тоже диссонанс?
C++
1
const char* fileName[32][256] = { "data.bin", "data1.bin", "data2.bin", "data3.bin", "data4.bin" };
Компилируется, но программа вылетает с ошибкой.
Все дата.бин на месте.
0
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
13.11.2011, 13:47
programina, 256 - это для символов или как?
1
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.11.2011, 13:49  [ТС]
256 - это число элементов в массиве, каждый элемент по 32
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
13.11.2011, 13:54
Цитата Сообщение от programina Посмотреть сообщение
Компилируется, но программа вылетает с ошибкой.
ошибка похоже здесь:
C++
1
Load( fileName[32][0] );
выход за пределы массива.
0
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
13.11.2011, 13:57
Цитата Сообщение от programina Посмотреть сообщение
256 - это число элементов в массиве


Ладно по другому задам вопрос. По идее программа будет открывать 32 файла или 32*256 файлов?
1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
13.11.2011, 14:05
Да, тоже есть ощущение, что должно быть как то так:
C++
1
2
3
const char* fileName[32]= { "data.bin", "data1.bin", "data2.bin", "data3.bin", "data4.bin",/*...*/, "data31.bin" };
//...
Load( fileName[0] );
1
 Аватар для programina
2062 / 619 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.11.2011, 15:04  [ТС]
Спасибо вам Евгений М. и Kastaneda
Переписала вот так, все работает и все дата.бины вне майна

C++
1
2
3
4
5
6
7
const char* fileName[256]= { "data.bin", "data1.bin", "data2.bin", "data3.bin", "data4.bin", "data5.bin" };
 
int main()
{
    Load( fileName[0] );
 
    // ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.11.2011, 15:04
Помогаю со студенческими работами здесь

переменную глобально
Привет! У меня вот вопрос.. Каким образом можно правильно использовать переменные которые нужны в других классах, методах? Например, у...

Функцию объявить глобально
как использовать функцию в другой форме когда пытаюсь вызвать пишет UnitaddTheme.cpp(43): E2268 Call to undefined function...

Глобально игнорировать ошибки
Добрый день, подскажите плиииз, такое вообще возможно в ноде??? Есть некоторые ошибки, которые &quot;лень обрабатывать&quot;. ...

Перезаписать переменную глобально
Добрый день, всем. Подскажите пожалуйста как перезаписать переменную глобально? posMouseX = 0, posMouseY = 0, ...

PHPUnit глобально в PHPStorm
Хочется работать с PHPUnit глобально, чтобы не устанавливать в каждый проект отдельно. В настройках PHPStorm Проверяю через...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru