обнулить массив в C
Как наиболее правильно обнулить массив данных в C? Чтобы был обнулен не только первый элемент, но достоверно стерлись и все остальные.
anonymous
08.06.03 00:22:30 MSD
Re: обнулить массив в C
char a[100]; memset (a, 0, sizeof(a));
anonymous
( 08.06.03 01:00:49 MSD )
Re: обнулить массив в C
и не забывай продвинутые виндовуз компиляторы
при оптимизации просто
пропускают оператор memset(a,0,sizeof(a));
что делает gcc Хз )
PS: опять все приходиться делать вручную (((
Aleks_IZA ★
( 08.06.03 08:32:55 MSD )
Re: обнулить массив в C
С какого это перепоя? Если действительно есть такой компилятор, то это его глюк, а не оптимизация. Такое ощущение, что ты спутал 2 вещи:
— Просто выкинуть нафиг вызов memset.
— Вместо вызова memset использовать встроенный код (rep stosd или типа того). Т.е. по сути — тот же memset, но без накладных расходов на push+call+ret+add.
nobody ★★
( 08.06.03 15:07:00 MSD )
Re: обнулить массив в C
А ещё есть bzero. (может оно эфективнее будет)
anonymous
( 09.06.03 07:55:49 MSD )
Re: обнулить массив в C
an$ man bzero [skip] CONFORMING TO 4.3BSD. This function is deprecated -- use memset in new programs. В переводе с англ. это означает, что разработчики glibc рекомендуют использовать в новых программах memset вместо bzero.
nobody ★★
( 09.06.03 14:10:55 MSD )

Re: обнулить массив в C
char a[100]=; Работает классно! И не надо выдрючиваться.
kkk ★★
( 11.06.03 09:43:43 MSD )

Re: обнулить массив в C
char a[100]=; Работает классно! И не надо выдрючиваться.
kkk ★★
( 11.06.03 09:43:50 MSD )
Re: обнулить массив в C
2 kkk.
Такое ощущение, что в этом случае обнулится только a[0].
И потом, это работает только один раз. После того, как ты чего-то записал в `a’, а затем решил его обнулить, `a=;’ вообще не прокатит.
nobody ★★
( 11.06.03 13:14:03 MSD )
Re: обнулить массив в C
2nobody:
kkk прав, при инициализации массива, элементам «не хватившим » значений — инициализируются неявно \0. Для случая
char a[100] = < 0 >
a[0] — явно инициализируется 0-м
a[1]-a[99] — неявно инициализируются 0-м
ps: аналогичным образом можно инициализировать и структуры.
pss: все это есть в стандарте.
anonymous
( 18.06.03 02:28:30 MSD )
Ответ на: Re: обнулить массив в C от anonymous 18.06.03 02:28:30 MSD
Re: Re: обнулить массив в C
>2nobody: >kkk прав, при инициализации массива, элементам «не хватившим » >значений — инициализируются неявно \0. Для случая >char a[100] = < 0 >>a[0] — явно инициализируется 0-м >a[1]-a[99] — неявно инициализируются 0-м
>ps: аналогичным образом можно инициализировать и структуры. >pss: все это есть в стандарте.
——————— все что выше вранье. и зависит от компилятора но не факт покажы где есть в стандарте. используй memset
Обнуление массива в Си
Как правильно обнулить массив? Речь о любых типах массива, будь то символьный, целочисленный, динамический и т.п Если способов несколько то желательно написать как можно больше. Способ, который изучен мною выглядит как — то так:
char str[100] = ;
Но я не знаю является ли такой метод обнуления верным, с технической точки зрения и с точки зрения процедурного программирования и объектно-ориентированного программирования.
Отслеживать
задан 7 янв 2019 в 12:29
1,273 3 3 золотых знака 12 12 серебряных знаков 33 33 бронзовых знака
Как очистить массив char c
🙂 Привет! Глупый и простой вопрос возник. Как мне очистить массив типа char?
Я делал так:
char Massiv[100];
strcpy(Massiv, «»);
Но так не удобно, да и сам метод примитивен для очистки. Подскажите, как очищать легко и быстро?
И ещё! Не хчу тему создовать. Кто знает, где можно скачать видеоклип Глюк`oza и песня Невеста. Желательно чтоб размер экрана былы ХОРОШИМ и весь файл НЕ занимал менее 5 Мб. Лучше пусть он занимает мегобайт 20, я его скачать хочу. 8)
Сообщ. #2 , 27.05.03, 14:55

Рейтинг (т): 640
Цитата Владислав, 27.05.03, 18:46:23
Привет! Глупый и простой вопрос возник. Как мне очистить массив типа char?
Я делал так:
char Massiv[100];
strcpy(Massiv, «»);
Но так не удобно, да и сам метод примитивен для очистки. Подскажите, как очищать легко и быстро?
Не совсем понятен вопрос. Нужно обнулить весь массив или сделать строку нулевой длины?
Если первое — то:
memset
FillMemory
ZeroMemory
Если второе — то:
Massiv[0]=0;
Сообщ. #3 , 27.05.03, 15:12
Unregistered
Цитата trainer, 27.05.03, 18:55:26
Не совсем понятен вопрос. Нужно обнулить весь массив или сделать строку нулевой длины?
Если первое — то:
memset
FillMemory
ZeroMemory
Если второе — то:
Massiv[0]=0;
Спасибо! Надо только обнулить весь массив. Приведи примерчик. Я думаю это тебе не составит труда.
ЛЮДИ. ДРУГОЙ ВОПРОС.
Я создал свой КАДР, т.е. Frame1 объект. Как мне его сохранить так, чтоб я его мог многократно загружать из вкладки с компонентами. Саму вкладку я знаю как создавать. Но как туда положить мой Frame для многократного использования?
Сообщ. #4 , 27.05.03, 16:45

Рейтинг (т): 640
Варианты:
1) memset(Massiv,0,100);
2) FillMemory(Massiv,100,0);
3) ZeroMemory(Massiv,100);
Прим.: варианты 2 и 3 — только под Windows
Сообщение отредактировано: trainer — 28.05.03, 05:18
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Borland C++ Builder/Turbo C++ Explorer
- Следующая тема
Как очистить массив char c
Простите за примитивный вопрос, но как очитить перменную типа char ?
Пробовал по-разному извращаться, но не получается
Re: Очистить переменную char
| От: | Анатолий Широков | |
| Дата: | 19.08.04 12:18 | |
| Оценка: | 3 (1) +1 | |
Здравствуйте, trustno1, Вы писали:
T>Простите за примитивный вопрос, но как очитить перменную типа char ?
T>Пробовал по-разному извращаться, но не получается
А можно посмотреть вариаты?
Re: Очистить переменную char
| От: | Glоbus |
| Дата: | 19.08.04 12:18 |
| Оценка: |
Здравствуйте, trustno1, Вы писали:
T>Простите за примитивный вопрос, но как очитить перменную типа char ?
T>Пробовал по-разному извращаться, но не получается
А че значит очистить. можно вызвать char() — тогда туда будет записано некоторое дефолтное «нулевое» значение.
Удачи тебе, браток!
Re: Очистить переменную char
| От: | ChipSet2k | http://merlinko.com |
| Дата: | 19.08.04 12:19 | |
| Оценка: |
Здравствуйте, trustno1, Вы писали:
T>Простите за примитивный вопрос, но как очитить перменную типа char ?
T>Пробовал по-разному извращаться, но не получается
char с = ‘\0’;
«Всё что не убивает нас, делает нас сильнее. »
Re: Очистить переменную char
| От: | _nn_ | www.nemerleweb.com |
| Дата: | 19.08.04 12:23 | |
| Оценка: |
Здравствуйте, trustno1, Вы писали:
T>Простите за примитивный вопрос, но как очитить перменную типа char ?
T>Пробовал по-разному извращаться, но не получается
А что означает очистить ?
Re[2]: Очистить переменную char
| От: | trustno1 |
| Дата: | 19.08.04 12:33 |
| Оценка: |
Здравствуйте, Анатолий Широков, Вы писали:
АШ>Здравствуйте, trustno1, Вы писали:
T>>Простите за примитивный вопрос, но как очитить перменную типа char ?
T>>Пробовал по-разному извращаться, но не получается
АШ>А можно посмотреть вариаты?
1. varb = ‘\0’;
2. memset(varb,0,sizeof(varb));
3. varb = «»;
Re[2]: Очистить переменную char
| От: | trustno1 |
| Дата: | 19.08.04 12:35 |
| Оценка: |
Здравствуйте, Glоbus, Вы писали:
G>Здравствуйте, trustno1, Вы писали:
T>>Простите за примитивный вопрос, но как очитить перменную типа char ?
T>>Пробовал по-разному извращаться, но не получается
G>А че значит очистить. можно вызвать char() — тогда туда будет записано некоторое дефолтное «нулевое» значение.
не выходит, пишет, что не может переконвертить чар[1] в чар[100]
Re[3]: Очистить переменную char
| От: | _nn_ | www.nemerleweb.com |
| Дата: | 19.08.04 12:35 | |
| Оценка: |
Здравствуйте, trustno1, Вы писали:
T>Здравствуйте, Анатолий Широков, Вы писали:
АШ>>Здравствуйте, trustno1, Вы писали:
T>>>Простите за примитивный вопрос, но как очитить перменную типа char ?
T>>>Пробовал по-разному извращаться, но не получается
АШ>>А можно посмотреть вариаты?
T>char[100] varb;
T>1. varb = ‘\0’;
T>2. memset(varb,0,sizeof(varb));
T>3. varb = «»;
char varb[100]=""; // или char varb[100]; strcpy(varb,""); // или char varb[100]; varb[0]=0;
P.S.
Вам стоит прочитать про массивы и строки в С.
Re: Очистить переменную char
| От: | BArt |
| Дата: | 19.08.04 12:36 |
| Оценка: |
Здравствуйте, trustno1, Вы писали:
T>Простите за примитивный вопрос, но как очитить перменную типа char ?
T>Пробовал по-разному извращаться, но не получается
Предлагаю совершить над ней заклинание exorcism, для этого нужно сказать пару матерных слов в ее адрес, потом можно считать ее чистой. А в коде писать ничего не нужно.
P.S. Извините за юмор.
Re[2]: Очистить переменную char
| От: | _nn_ | www.nemerleweb.com |
| Дата: | 19.08.04 12:37 | |
| Оценка: |
Здравствуйте, BArt, Вы писали:
BA>Здравствуйте, trustno1, Вы писали:
T>>Простите за примитивный вопрос, но как очитить перменную типа char ?
T>>Пробовал по-разному извращаться, но не получается
BA>Предлагаю совершить над ней заклинание exorcism, для этого нужно сказать пару матерных слов в ее адрес,
Вроде этого
Автор:
Дата: 02.06.04
?
BA>потом можно считать ее чистой. А в коде писать ничего не нужно.
BA>P.S. Извините за юмор.
Re: Очистить переменную char
| От: | Apapa |
| Дата: | 19.08.04 12:38 |
| Оценка: |
Здравствуйте, trustno1, Вы писали:
T>Простите за примитивный вопрос, но как очитить перменную типа char ?
T>Пробовал по-разному извращаться, но не получается
Переменная типа char — это число размеров в один байт.
Т.к. это просто число, то оно ОБЯЗАНО принимать какое-то значение либо от 0 до 255 (если по-умолчанию char беззнаковый), либо от -128 до 128 (если знаковый).
«Очистить переменную char» само по себе лишино смысла.
Другое дело, если это некоторая необходимость в программе. Т.е. требуется, чтобы в определенной ситуации данная переменная была «помечена» как чистая.
В этом случае можно поступить двояко. Либо выделить специальное значение, которое будет обозначять очищенную переменную (например, 0x80 == -128 для знакового char), либо дополнить char до большего типа или до структуры, где кроме самого значения хранить еще признак того, инициализирована переменная или нет (может Вы, например, так ошибки ищете).
В любом случае, следует пояснить для чего Вам это нужно.
Здесь могла бы быть Ваша реклама!
Re[3]: Очистить переменную char
| От: | Chez |
| Дата: | 19.08.04 12:40 |
| Оценка: |
Здравствуйте, trustno1, Вы писали:
T>Здравствуйте, Анатолий Широков, Вы писали:
АШ>>Здравствуйте, trustno1, Вы писали:
T>>>Простите за примитивный вопрос, но как очитить перменную типа char ?
T>>>Пробовал по-разному извращаться, но не получается
АШ>>А можно посмотреть вариаты?
T>char[100] varb;
T>1. varb = ‘\0’;
T>2. memset(varb,0,sizeof(varb));
T>3. varb = «»;
4. VariantClear()
А если серьезно
varb[0]='\0'; // только строчку char[100] varb; // надо заменить на char varb[100];
Chez, ICQ# 161095094
Re[4]: Очистить переменную char
| От: | Chez |
| Дата: | 19.08.04 12:43 |
| Оценка: |
Здравствуйте, _nn_, Вы писали:
Плохо думать, еще хуже думать что ты думаешь , но самое хучшее когда кто-то думает что ты думаешь.
Хуже всего думать о чём же ты думаешь.
Chez, ICQ# 161095094
Re[4]: Очистить переменную char
| От: | trustno1 |
| Дата: | 19.08.04 12:46 |
| Оценка: |
Здравствуйте, _nn_, Вы писали:
__>Здравствуйте, trustno1, Вы писали:
T>>Здравствуйте, Анатолий Широков, Вы писали:
АШ>>>Здравствуйте, trustno1, Вы писали:
T>>>>Простите за примитивный вопрос, но как очитить перменную типа char ?
T>>>>Пробовал по-разному извращаться, но не получается
АШ>>>А можно посмотреть вариаты?
T>>char[100] varb;
T>>1. varb = ‘\0’;
T>>2. memset(varb,0,sizeof(varb));
T>>3. varb = «»;
__>А вот так :
__>
__>char varb[100]=""; __>// или __>char varb[100]; __>strcpy(varb,""); __>// или __>char varb[100]; __>varb[0]=0; __>
__>P.S.
__>Вам стоит прочитать про массивы и строки в С.
спасибо, разобрался
да, читать надо
Re[5]: Очистить переменную char
| От: | _nn_ | www.nemerleweb.com |
| Дата: | 19.08.04 12:58 | |
| Оценка: |
Здравствуйте, Chez, Вы писали:
C>Здравствуйте, _nn_, Вы писали:
C>
C>Плохо думать, еще хуже думать что ты думаешь , но самое хучшее когда кто-то думает что ты думаешь.
C>Хуже всего думать о чём же ты думаешь.
Я вас не понял
То что я написал как раз и нужно было.
В чем выражается ваша притензия ?
Re[6]: Очистить переменную char
| От: | Chez |
| Дата: | 19.08.04 13:07 |
| Оценка: |
Здравствуйте, _nn_, Вы писали:
__>Здравствуйте, Chez, Вы писали:
C>>Здравствуйте, _nn_, Вы писали:
C>>
C>>Плохо думать, еще хуже думать что ты думаешь , но самое хучшее когда кто-то думает что ты думаешь.
C>>Хуже всего думать о чём же ты думаешь.
__>Я вас не понял
__>То что я написал как раз и нужно было.
__>В чем выражается ваша притензия ?
Никакой претензии.
Это мой комментарий к Вашему футеру в топиках. Очень он мне понравился.
P.s. Если вы восприняли на свой счёт, то я даже не пробовал думать, о чём же ты думаешь, поэтому не знаю, плохо это, или хорошо.
Chez, ICQ# 161095094
Re[7]: Очистить переменную char
| От: | _nn_ | www.nemerleweb.com |
| Дата: | 19.08.04 13:12 | |
| Оценка: |
Здравствуйте, Chez, Вы писали:
C>Здравствуйте, _nn_, Вы писали:
__>>Здравствуйте, Chez, Вы писали:
C>>>Здравствуйте, _nn_, Вы писали:
C>>>
C>>>Плохо думать, еще хуже думать что ты думаешь , но самое хучшее когда кто-то думает что ты думаешь.
C>>>Хуже всего думать о чём же ты думаешь.
__>>Я вас не понял
__>>То что я написал как раз и нужно было.
__>>В чем выражается ваша притензия ?
C>Никакой претензии.
C>Это мой комментарий к Вашему футеру в топиках. Очень он мне понравился.
Спасибо
C>P.s. Если вы восприняли на свой счёт, то я даже не пробовал думать, о чём же ты думаешь, поэтому не знаю, плохо это, или хорошо.
Ну тогда прошу прощения, я вас не понял правильно