Как очистить массив char c

Очистка массива char c

Я думал, установив первый элемент в null, очистит все содержимое массива char.

Однако это только устанавливает первый элемент в null.

ОТВЕТЫ

Ответ 1

С другой стороны, если вы предпочитаете рассматривать это как строку с завершающим нулевым символом C/С++, установка первого байта в 0 будет эффективно очищать строку.

Ответ 2

Если вы хотите очистить все элементы массива, вам нужно будет посетить каждый элемент. Это то, что memset для:

Это, как правило, самый быстрый способ позаботиться об этом. Если вы можете использовать С++, рассмотрите std:: fill вместо:

Ответ 3

Почему вы думаете, что установка одного элемента очистит весь массив? В C, особенно, почти никогда не бывает, если программист явно не программирует его. Если вы установили первый элемент в ноль (или любое значение), то вы сделали именно это и не более того.

При инициализации вы можете установить массив в ноль:

В противном случае я не знаю никакой техники, кроме memset, или чего-то подобного.

Ответ 4

Ответ 5

Установка первого элемента оставляет остальную память нетронутой, но функции str будут обрабатывать данные как пустые.

Ответ 6

Попробуйте использовать следующий код:

Ответ 7

Найдите ниже, где я объяснил данные в массиве после случая 1 и случая 2.

Хотя установка первого аргумента в NULL будет делать трюк, рекомендуется использовать memset

Ответ 8

Неа. Все, что вы делаете, устанавливает первое значение в ‘\ 0’ или 0.

Если вы работаете с нулевыми завершенными строками, то в первом примере вы получите поведение, которое имитирует то, что вы ожидаете, однако память все еще установлена.

Если вы хотите очистить память без использования memset, используйте цикл for.

Ответ 9

Ответ 10

Написание нулевого символа для первого символа делает именно это. Если вы рассматриваете его как строку, код, подчиняющийся символу завершения нулевой последовательности, будет рассматривать его как пустую строку, но это не то же самое, что очистка данных. Если вы хотите действительно очистить данные, вам понадобится использовать memset.

Ответ 11

Я подумал, установив первый элемент к нулевому будет очистить весь содержимое массива char.

Это неверно, поскольку вы обнаружили

Однако это только устанавливает первый элемент в null.

Вам нужно использовать memset, чтобы очистить все данные, недостаточно указать одну из записей в null.

Однако, если установка элемента массива в значение null означает что-то особенное (например, при использовании нулевой завершающей строки), может быть достаточно установить первый элемент в null. Таким образом, любой пользователь массива поймет, что он пуст, хотя массив все еще содержит старые символы в памяти

Ответ 12

установите первый элемент в NULL. печать массива char ничего не даст вам.

Источник

Как очистить массив символов?

Имейте массив символов, например char members [255]. Как я могу полностью его опорожнить без использования цикла?

Под «пустым» я подразумеваю, что если в нем были сохранены некоторые значения, то этого не должно быть. Например, если я использую strcat, старое значение не должно оставаться

14 ответов

Если массив находится в области видимости, или

РЕДАКТИРОВАТЬ Конечно, теперь требование изменилось с общей задачи очистки массива на чистый сброс строки, memset является излишним, и достаточно обнуления первого элемента (как указано в других ответах).

Вы можете воспользоваться следующей инструкцией:

Отказ от ответственности: я обычно не программирую на C, поэтому в моих примерах могут быть какие-то синтаксические ошибки, но я надеюсь, что идеи, которые я пытаюсь выразить, ясны.

Если «очистка» означает «содержащий пустую строку», вы можете просто присвоить первому элементу массива ноль, что фактически заставит массив содержать пустую строку:

Если «очистка» означает «освобождение памяти, которую он использует», вы не должны использовать фиксированный массив символов в первую очередь. Скорее, вы должны определить указатель на char, а затем выполнить malloc / free (или присвоение строки) в зависимости от ситуации.

Пример с использованием только статических строк:

У меня была аналогичная проблема. Я пытался отобразить результаты аналогово-цифрового значения из массива типа Char. Проблема заключалась в том, что когда я поворачивал Pot, чтобы получить более низкое напряжение или более низкое преобразованное десятичное значение, такое как 5 из промежутка (1023-0), увеличение количества символов из массива оставалось рядом с числом 5. Я использовал этот метод, чтобы избавиться от проблема:

LCD_Send_String («»); \ использовались пробелы как строковые символы LCD_Send_Command (LCD_THIRD_ROW); \ Вернул курсор обратно в начало строки.

Зависит от того, что вы подразумеваете под словом «пустой»:

Не пытайтесь обнулить массив символов, если вы имеете дело со строками. Ниже приведен простой способ работы со строками символов.

Копировать (назначить новую строку):

Объединить (добавить строку):

Члены типа char [255] = <0>;

Это должно сработать. Согласно языку программирования C:

Если массив имеет фиксированный размер, количество инициализаторов не может превышать количество членов массива; если их меньше, остальные члены инициализируются 0.

Вы не можете очистить массив как таковой, он всегда содержит одинаковое количество данных.

Достаточно, учитывая ваши требования.

Обратите внимание, однако, что это не «опустошение» буфера. Память по-прежнему выделена, в ней все еще могут существовать допустимые значения символов и т. Д.

Источник

Как очистить массив char c

🙂 Привет! Глупый и простой вопрос возник. Как мне очистить массив типа char?
Я делал так:

char Massiv[100];
strcpy(Massiv, «»);

Но так не удобно, да и сам метод примитивен для очистки. Подскажите, как очищать легко и быстро? Как очистить массив char c

И ещё! Не хчу тему создовать. Кто знает, где можно скачать видеоклип Глюк`oza и песня Невеста. Желательно чтоб размер экрана былы ХОРОШИМ и весь файл НЕ занимал менее 5 Мб. Лучше пусть он занимает мегобайт 20, я его скачать хочу. 8)

Как очистить массив char c

Как очистить массив char cКак очистить массив char cКак очистить массив char cКак очистить массив char cКак очистить массив char cКак очистить массив char cКак очистить массив char cКак очистить массив char cКак очистить массив char c

Как очистить массив char cПривет! Глупый и простой вопрос возник. Как мне очистить массив типа char?
Я делал так:

char Massiv[100];
strcpy(Massiv, «»);

Но так не удобно, да и сам метод примитивен для очистки. Подскажите, как очищать легко и быстро? Как очистить массив char c

Спасибо! Надо только обнулить весь массив. Приведи примерчик. Я думаю это тебе не составит труда.

ЛЮДИ. ДРУГОЙ ВОПРОС.
Я создал свой КАДР, т.е. Frame1 объект. Как мне его сохранить так, чтоб я его мог многократно загружать из вкладки с компонентами. Саму вкладку я знаю как создавать. Но как туда положить мой Frame для многократного использования?

Источник

очистка массива с

Я думал, что, установив первый элемент в значение null, очистит все содержимое массива char.

однако это только устанавливает первый элемент в значение null.

16 ответов

Это зависит от того, как вы хотите просмотреть массив. Если вы просматриваете массив как ряд символов, единственный способ очистить данные-коснуться каждой записи. memset вероятно, самый эффективный способ достичь этого.

С другой стороны, если вы хотите просмотреть это как строку с нулевым завершением C/C++, установка первого байта в 0 эффективно очистит строку.

массив в C-это просто область памяти, так что действительно, my_custom_data[0] = ‘ ‘; назначение просто устанавливает первый элемент в ноль и оставляет другие элементы нетронутыми.

если вы хотите удалить все элементы массива, вам придется посетить каждый элемент. Именно это memset для:

это, как правило, самый быстрый способ позаботиться об этом. Если вы можете использовать C++, рассмотрите std:: fill вместо:

почему вы думаете, что установка одного элемента очистит весь массив? В C, особенно, мало что происходит без явного программирования программиста. Если установить первый элемент в ноль (или любое значение), то вы сделали именно это, и ничего больше.

при инициализации вы можете установить массив в ноль:

в противном случае я не знаю никакой техники, кроме memset или чего-то подобного.

попробуйте следующий код:

установка первого элемента оставляет остальную часть памяти нетронутой, но функции str будут обрабатывать данные как пустые.

Pls найти ниже, где я объяснил с данными в массиве после случая 1 & случай 2.

хотя установка первого аргумента в NULL сделает трюк, использование memset рекомендуется

Неа. Все, что вы делаете-это установка первого значения ‘\0’ или 0.

Если вы работаете со строками с нулевым завершением, то в первом примере вы получите поведение, которое имитирует то, что вы ожидаете, однако память все еще установлена.

Если вы хотите очистить память без использования memset, используйте цикл for.

запись нулевого символа в первый символ делает именно это. Если вы рассматриваете его как строку, код, подчиняющийся символу завершения null, будет рассматривать его как нулевую строку, но это не то же самое, что очистка данных. Если вы хотите очистить данные, вам нужно будет использовать memset.

Я думал, что первый элемент to a null очистит все содержание массива char.

это неправильно, как вы обнаружили

однако это только устанавливает первый элемент имеет значение null.

вам нужно использовать memset для очистки всех данных, недостаточно установить одну из записей в null.

однако, если элемент массива значение null означает что-то особенное (например, при использовании нулевой завершающей строки), может быть достаточно установить первый элемент в значение null. Таким образом, любой пользователь массива поймет, что он пуст, даже если массив все еще включает старые символы в памяти

задайте для первого элемента значение NULL. печать массива char ничего вам не даст.

Источник

Как очистить массив символов?

имеют массив символов, таких как члены char[255]. Как я могу очистить его полностью без использования цикла?

под «пустым» я имею в виду, что если в нем хранятся некоторые значения, то это не должно. Например, если я делаю strcat, то старое значение не должно оставаться

13 ответов

если массив находится в области, или

если у вас есть только значение указателя, и nMembers-количество элементов в массиве.

EDIT конечно, теперь требование изменилось с общей задачи очистки массива на чисто сброс строки, memset является излишним и просто обнуление первого элемента достаточно (как отмечено в других находить ответы.)

EDIT для использования функцию memset вы должны включить строка.h.

зависит от того, что вы подразумеваете под «пустой»:

это должно сработать. В соответствии с языком программирования C:

Если массив имеет фиксированный размер, количество инициализаторы не могут превышать число членов массива; если их меньше, остальные члены инициализируются с 0.

вы не можете очистить массив как таковой, он всегда содержит одинаковый объем данных.

в более широком контексте данные в массиве могут представлять собой пустой список элементов, но это должно быть определено в дополнение к массиву. Наиболее распространенные способы сделать это-сохранить количество допустимых элементов (см. ответ pmg) или строки, чтобы завершить их нулевым символом (ответ Феликса). Есть и более сложные способы, например, кольцевой буфер использует два индекса для позиции, где данные добавляются и удаляются.

не пытайтесь обнулить свой массив символов, если вы имеете дело со строками. Ниже приведен простой способ работы со строками типа char.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *