обнулить массив в C
Как наиболее правильно обнулить массив данных в C? Чтобы был обнулен не только первый элемент, но достоверно стерлись и все остальные.
anonymous
08.06.03 00:22:30 MSD
char a[100]; memset (a, 0, sizeof(a));
anonymous
( 08.06.03 01:00:49 MSD )
и не забывай продвинутые виндовуз компиляторы
при оптимизации просто
пропускают оператор memset(a,0,sizeof(a));
что делает gcc Хз )
PS: опять все приходиться делать вручную (((
Aleks_IZA ★
( 08.06.03 08:32:55 MSD )
С какого это перепоя? Если действительно есть такой компилятор, то это его глюк, а не оптимизация. Такое ощущение, что ты спутал 2 вещи:
— Просто выкинуть нафиг вызов memset.
— Вместо вызова memset использовать встроенный код (rep stosd или типа того). Т.е. по сути — тот же memset, но без накладных расходов на push+call+ret+add.
nobody ★★
( 08.06.03 15:07:00 MSD )
А ещё есть bzero. (может оно эфективнее будет)
anonymous
( 09.06.03 07:55:49 MSD )
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 )

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

char a[100]=; Работает классно! И не надо выдрючиваться.
kkk ★★
( 11.06.03 09:43:50 MSD )
2 kkk.
Такое ощущение, что в этом случае обнулится только a[0].
И потом, это работает только один раз. После того, как ты чего-то записал в `a’, а затем решил его обнулить, `a=;’ вообще не прокатит.
nobody ★★
( 11.06.03 13:14:03 MSD )
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 )
Ответ на: комментарий от anonymous 18.06.03 02:28:30 MSD
>2nobody: >kkk прав, при инициализации массива, элементам «не хватившим » >значений — инициализируются неявно \0. Для случая >char a[100] = < 0 >>a[0] — явно инициализируется 0-м >a[1]-a[99] — неявно инициализируются 0-м
>ps: аналогичным образом можно инициализировать и структуры. >pss: все это есть в стандарте.
——————— все что выше вранье. и зависит от компилятора но не факт покажы где есть в стандарте. используй memset
Обнулить массив char

Не могу обнулить переменную типа char
Доброго времени суток, помогите обнулить переменную, т.к. мой компилятор ругается "E2277 Lvalue.
Запись строки char в массив char
Глупый вопрос, но что поделать, многое забыл. Хочу записть строку типа char в массив строк типа.
Как перевести массив char[] в char*
Не знаю как перевести массив char в переменную char*
ReadKey или как обнулить char.
Пытаюсь делать игру на pascalABC (Для общего развития) и наткнулся на такую проблему — при нажатии.
Как очистить массив char c
Пользователь
Регистрация: 15.02.2011
Сообщений: 41
как очистить массив.
Например у меня есть:
#include FILE *f; int main() < system ("chcp 1251"); char fn[]="yura.txt"; char buf[200]; if((f=fopen(fn,"a"))==NULL) cout system("PAUSE"); >
Как мне очищать buf.
Пользователь
Регистрация: 10.10.2010
Сообщений: 24
buf[0] = ‘\0’; // ‘\0’ — конец строки
Последний раз редактировалось Exeil; 02.05.2011 в 19:45 . Причина: ;
Регистрация: 15.02.2010
Сообщений: 15,673
buf[0] = '\0';
Форумчанин
Регистрация: 09.09.2008
Сообщений: 395
Регистрация: 15.02.2010
Сообщений: 15,673
2 zotox
Зачем? Для строковых функций первого нуля достаточно.
Последний раз редактировалось p51x; 02.05.2011 в 21:46 .
| Похожие темы | ||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Как очистить ячейку | R@v14 | Microsoft Office Excel | 1 | 31.05.2010 16:11 |
| Как очистить массив? | chandrasecar | Общие вопросы Delphi | 9 | 09.11.2008 20:39 |
| Как очистить Canvas? | beegl | Общие вопросы Delphi | 4 | 30.05.2008 02:51 |
| Как очистить Canvas? | Pro_BerSerK | Общие вопросы Delphi | 9 | 30.01.2008 16:03 |
| как очистить экран | doncova1 | Общие вопросы C/C++ | 3 | 18.03.2007 09:50 |
Как очистить массив 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
- Следующая тема