В Си строка представляет собой последовательность последовательных char
переменных, оканчивающихся представлением нуля в виде символа, '\0'
.
Это значение действует как часовой для концаstring и допускает приведенный ниже идиоматический цикл «обработки строки»:
char *p = <some string>;
while(*p)
{
dosomething(*p);
p++;
}
Библиотечные функции, обрабатывающие строки (т. е. strlen
, strcpy
, strcat
и т. д.), используют конструкцию, аналогичную кодувыше, и когда вы пишете свой собственный код, который обрабатывает произвольные строки, вы найдете проверку пустых символов полезной;даже если строка хранится в массиве char []
известной длины, она передается в указатель на свой первый элемент при передаче в функцию, теряя информацию о ее длине.
Итак, если вы хотите очиститьстрока, все что нужно, это установить первый элемент строки в '\0'
.Если первое значение в строке - нулевой терминатор, условие *p
ложно и цикл никогда не вводится:
char *p = "\0someotherstuff";
printf("%zu\n", strlen(p));
// Output: 0