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

Как инициализировать глобальную переменную в зависимости от количества строк в файле - C++

Восстановить пароль Регистрация
 
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
20.01.2014, 17:05     Как инициализировать глобальную переменную в зависимости от количества строк в файле #1
Есть переменная типа
C++
1
int glob = 3;
объявлена в не main(), т.е. глобальная.
После неё, тоже не в mаin, объявлены структуры ex:
C++
1
struct buffer[glob ];
далее: есть файл произвольный с n строками.
имеется функция для подсчёта строк
C++
1
2
3
4
5
6
7
int count_string(FILE *file) //возвращает кол-во строк в файле
{
char string[dlina];
int j = 0;
while(fgets(string,dlina,file)!=NULL)j++;
return j;
}
она непосредственно вызывается в main().

Собственно вопрос: как инициализировать глобальную переменную в зависимости от кол-ва строк в файле???
Детский вопрос, но я как-то запутался, помогите плиз (я думаю, что нельзя)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2014, 17:05     Как инициализировать глобальную переменную в зависимости от количества строк в файле
Посмотрите здесь:

C++ Как обьявить глобальную переменную в функции?
C++ Как и где описать глобальную переменную?
C++ Как объявить глобальную переменную в Dev-C++ 4.9.9.2?
C++ Как обьявить глобальную переменную
Как (можно ли) инициализировать переменную в структуре? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,868
Записей в блоге: 2
Завершенные тесты: 1
20.01.2014, 17:12     Как инициализировать глобальную переменную в зависимости от количества строк в файле #2
C++
1
struct buffer[glob ];
имя структуры забыли?

Добавлено через 1 минуту
C++
1
int glob = count_string("c:\\boot.ini");
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,167
Завершенные тесты: 1
20.01.2014, 17:13     Как инициализировать глобальную переменную в зависимости от количества строк в файле #3
Цитата Сообщение от танкист34 Посмотреть сообщение
как инициализировать глобальную переменную в зависимости от кол-ва строк в файле?
В нужном месте присвойте ей нужное значение.
Значение глобальной переменной не пропадет до следующего присваивания..
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
20.01.2014, 17:31  [ТС]     Как инициализировать глобальную переменную в зависимости от количества строк в файле #4
Цитата Сообщение от Croessmah Посмотреть сообщение
1
int glob = count_string("c:\\boot.ini");
так не получится и не получается. Причина: массив структур требует const int в качестве кол-ва элементов, а const int переинициализировать заново нельзя.

Добавлено через 1 минуту
Цитата Сообщение от zss Посмотреть сообщение
В нужном месте присвойте ей нужное значение.
Значение глобальной переменной не пропадет до следующего присваивания..
я не зря про массив структур написал, они требуют чтобы кол-во элементов было объявлено или через define, или через const int
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,868
Записей в блоге: 2
Завершенные тесты: 1
20.01.2014, 17:35     Как инициализировать глобальную переменную в зависимости от количества строк в файле #5
Цитата Сообщение от танкист34 Посмотреть сообщение
Причина: массив структур требует const int в качестве кол-ва элементов
где в первом посте const?
C++
1
int glob = 3;
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,167
Завершенные тесты: 1
20.01.2014, 17:37     Как инициализировать глобальную переменную в зависимости от количества строк в файле #6
C++
1
2
3
4
5
6
int glob;
int main()
{
    glob=count_string("c:\\boot.ini");
   ....
}
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
20.01.2014, 17:42  [ТС]     Как инициализировать глобальную переменную в зависимости от количества строк в файле #7
Цитата Сообщение от Croessmah Посмотреть сообщение
где в первом посте const?
C++
1
int glob = 3;
дак его и нет, так как я спрашиваю.. понимаю что упустил, надо было написать как есть, просто, я думал, что все знают что кол-во элементов в массиве структур должно обладать таким типом.
но вопрос всё равно остаётся.

Добавлено через 2 минуты
Цитата Сообщение от zss Посмотреть сообщение
C++
1
2
3
4
5
6
int glob;
int main()
{
    glob=count_string("c:\\boot.ini");
   ....
}
если добавим массив структур:
C++
1
2
3
4
5
6
7
8
9
10
int glob;
struct tip
{int a;
};
struct tip test[glob];
int main()
{
    glob=count_string("c:\\boot.ini");
   ....
}
получим сообщение, что для инициализации массива, glob должно быть типом const int (типо того)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,868
Записей в блоге: 2
Завершенные тесты: 1
20.01.2014, 17:54     Как инициализировать глобальную переменную в зависимости от количества строк в файле #8
Цитата Сообщение от танкист34 Посмотреть сообщение
просто, я думал, что все знают что кол-во элементов в массиве структур должно обладать таким типом.
Может Вы VLA используете? Мы ж экстрасенсы великие тут...

Используйте std::vector и не парьтесь
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
20.01.2014, 17:55     Как инициализировать глобальную переменную в зависимости от количества строк в файле #9
танкист34, размер массива должен быть константой времени компиляции, а ты glob хочешь инициализировать во время выполнения программы. Выделяй память под массив динамически.
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,167
Завершенные тесты: 1
20.01.2014, 17:57     Как инициализировать глобальную переменную в зависимости от количества строк в файле #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
int glob;
struct tip
{int a;
};
tip *test;
int main()
{
    glob=count_string("c:\\boot.ini");
     test=new tip[glob];
   ....
}
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
26.01.2014, 18:48  [ТС]     Как инициализировать глобальную переменную в зависимости от количества строк в файле #11
а память высвободить вот так?:
C++
1
delete [] test;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2014, 19:05     Как инициализировать глобальную переменную в зависимости от количества строк в файле
Еще ссылки по теме:

Как глобальную переменную засунуть в структуру? C++
Можете подсказать,как правильно описать глобальную переменную C++
Как создать глобальную переменную? C++

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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
26.01.2014, 19:05     Как инициализировать глобальную переменную в зависимости от количества строк в файле #12
Да, так.
Yandex
Объявления
26.01.2014, 19:05     Как инициализировать глобальную переменную в зависимости от количества строк в файле
Ответ Создать тему
Опции темы

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