Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2016, 23:19   #1
timcryt
Форумчанин
 
Регистрация: 25.01.2016
Сообщений: 105
По умолчанию Как заполнить массив нулями (GNU C)

Как заполнить массив нулями, массив большой (2756 ячеек) поэтому писать
Код:
char* arr[]={"","","","","","","",..."","","","","","","","",""};
не хочется, да и так
Код:
char* arr[2756];
int i=0;
while (i<2756)
{
    arr[i]="";
    i+;
}
писать неудобно, как можно сделать массив полностью заполненный нулями при объявлении (искал, нашёл только для векторов в языке C++)?
timcryt вне форума Ответить с цитированием
Старый 11.03.2016, 23:28   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

memset?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.03.2016, 23:35   #3
timcryt
Форумчанин
 
Регистрация: 25.01.2016
Сообщений: 105
По умолчанию

memset не подходит, он должен располагаться в функции, если ли бы это было допустимо я решил проблему циклом while
timcryt вне форума Ответить с цитированием
Старый 12.03.2016, 04:51   #4
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

При объявлении заполнить нулями не получится.

HeapCreate https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
ZeroMemory https://msdn.microsoft.com/ru-ru/lib...(v=vs.85).aspx
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 12.03.2016, 11:06   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Какой стандарт и версия компилятора?

Разве нельзя так?
Код:
char* arr[256] = { 0 };
с -std=gnu99 точно есть.
http://rextester.com/KXCQ69454

Хотя не, это не совсем то. Оно просто нулями заполняет все остальные элементы (вроде с C99). Но для этой задачи видимо подойдет.

И я так и не понял чем вам memset не подходит.

Цитата:
Сообщение от challengerr Посмотреть сообщение
Кроме винды ОС не существует?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 12.03.2016 в 11:25.
Alex11223 вне форума Ответить с цитированием
Старый 12.03.2016, 19:07   #6
timcryt
Форумчанин
 
Регистрация: 25.01.2016
Сообщений: 105
По умолчанию

memset не подходит тем что для него нужна функция, а это глобальнй массив, заполнить его нулями нужно при объявлении.
timcryt вне форума Ответить с цитированием
Старый 12.03.2016, 19:19   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну сделайте какую-нибудь функцию инициализации и вызовите в начале работы программы.

Единственный другой возможный вариант указан в сообщении выше.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.03.2016, 19:25   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от timcryt Посмотреть сообщение
Как заполнить массив нулями, массив большой (2756 ячеек) поэтому писать
Честно говоря, уже надоело. Одно и то-же! Блин, да погугли, пояндекси побинги. Чё, в одни танчики можем играть, а за тебя всё дядки сделают? Вот тефиг по всей красивой лицу.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 12.03.2016, 20:13   #9
timcryt
Форумчанин
 
Регистрация: 25.01.2016
Сообщений: 105
По умолчанию

В том то и проблема, что я это делал, везде советуют либо использовать векторы (а в СИ их нет), WinAPI (в Linux WinAPI нет) или функции наподобие memset или заполнение нулями в цикле.
timcryt вне форума Ответить с цитированием
Старый 12.03.2016, 20:22   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Причем тут винапи? Чем оно поможет лучше memset'а?

Вы сами себе придумали проблему непонятно зачем.
Есть два простых варианта:
1. Сделать какую-нибудь функцию инициализации и вызвать в начале работы программы.
2. (не знаю точно с какого стандарта, скорее всего с С99, то есть флаг компилятора -std=c99 или -std=gnu99)
Код:
char* arr[256] = { 0 };
Это заполнит первый элемент нулем, и остальные элементы нулями.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заполнить массив рандомными числами (Си) Sterben Помощь студентам 2 26.04.2015 19:51
Как заполнить массив? L6go1as Общие вопросы C/C++ 2 02.11.2011 19:34
как заполнить трехмерный массив процедурой? MyLastHit Общие вопросы Delphi 9 03.01.2011 21:00
Как заполнить массив вещественными числами new-in-c Общие вопросы C/C++ 1 03.05.2010 10:54
как заполнить массив рандомно ronny137 Помощь студентам 9 02.05.2010 21:25