Массивы символов используются для хранения нескольких символьных элементов в непрерывно выделенной памяти. В нескольких вопросах у нас есть необходимость очистить массив символов, но вы не можете очистить массив символов, установив для отдельных членов какое-то значение, указывающее, что они ничего не содержат. Итак, нам нужны какие-то другие методы для выполнения этой задачи. Давайте проверим несколько методов для выполнения этой задачи.
Методы очистки массива символов в C упомянуты ниже:
- Использование элемента NULL
- Использование strcpy для очистки строки
- Использование memset для очистки
- Очистка динамического массива символов с помощью бесплатного
1. Очистка строки в C с использованием (’/0′)
Элемент ’\0′ в строке или массиве символов используется для идентификации последнего элемента массива символов. Для пустого массива символов первым элементом является элемент ’\0′. Итак, мы можем использовать это свойство строки для очистки массива.
Пример:
С
// C Program to implement
// NULL element property
// to clear the array
#include <stdio.h>
int
main()
{
// declaring the array
char
arr[5] = {
'a'
,
'b'
,
'c'
,
'd'
,
'e'
};
printf
(
"Before: "
);
for
(
int
i = 0; arr[i] != NULL; i++)
printf
(
"%c "
, arr[i]);
printf
(
"\n"
);
// Clearing the array
arr[0] =
'\0'
;
printf
(
"After: "
);
for
(
int
i = 0; arr[i] != NULL; i++)
printf
(
"%c "
, arr[i]);
return
0;
}
Вывод
Before: a b c d e After:
2. Использование strcpy для очистки строки
strcpy — это предопределенная функция, уже существующая в заголовочном файле строки. Функция strcpy помогает нам копировать элементы одного массива в другой.
Синтаксис:
strcpy(first,second);
Здесь первый — это элемент, в который нам нужно скопировать элементы, а второй — массив, из которого мы копируем элементы.
Пример:
С
// C Program empty char array
// Using strcpy to clear
// the string
#include <stdio.h>
int
main()
{
// Creating char array
char
arr[5] = {
'a'
,
'b'
,
'c'
,
'd'
,
'e'
};
printf
(
"Before: "
);
for
(
int
i = 0; arr[i] !=
'\0'
; i++)
printf
(
"%c "
, arr[i]);
printf
(
"\n"
);
// Copying elements of empty array in arr
strcpy
(arr,
""
);
printf
(
"After: "
);
for
(
int
i = 0; arr[i] != NULL; i++)
printf
(
"%c "
, arr[i]);
return
0;
}
Вывод
Before: a b c d e After:
3. Использование memset для пустой строки
Он копирует один символ заданное количество раз в объект. Мы можем очистить массив символов в C, установив для всех элементов значение ’\0′. Таким образом, мы можем изменить каждый элемент индекса на «\ 0», поскольку первый элемент равен «\ 0», поэтому массив символов [] будет считаться пустым. Это работает, если массив не является динамическим.
Пример:
С
// C Program to empty char array
// using memset
#include <stdio.h>
int
main()
{
// character array
char
arr[5] = {
'a'
,
'b'
,
'c'
,
'd'
,
'e'
};
printf
(
"Before: "
);
for
(
int
i = 0; arr[i] !=
'\0'
; i++)
printf
(
"%c "
, arr[i]);
printf
(
"\n"
);
// using memset
memset
(arr,
'\0'
,
sizeof
(arr));
printf
(
"After: "
);
for
(
int
i = 0; arr[i] != NULL; i++)
printf
(
"%c "
, arr[i]);
return
0;
}
Вывод
Before: a b c d e After:
4. Использование бесплатного пустого динамического массива символов
Если мы используем динамический массив символов, это означает, что мы выделяем пространство для массива, поэтому простой метод очистки — освободить выделенное пространство.
Пример:
С
// C program to empty char array using
// free and dynamic array
#include <stdio.h>
int
main()
{
char
* arr;
arr = (
char
*)
malloc
(5);
arr[0] =
'a'
;
arr[1] =
'b'
;
arr[2] =
'c'
;
printf
(
"Before: "
);
for
(
int
i = 0; arr[i] !=
'\0'
; i++)
printf
(
"%c "
, arr[i]);
printf
(
"\n"
);
free
(arr);
printf
(
"After: "
);
for
(
int
i = 0; arr[i] != NULL; i++)
printf
(
"%c "
, arr[i]);
return
0;
}
Вывод
Before: a b c After: