У меня есть задание, где я должен перебирать символьный массив с помощью рекурсивной функции. Я подумал, что это было бы легко, так как я знал бы длину массива, но тогда мне нужен прототип, который я должен использовать:
void display(char str[])
Я не могу себе представить, как я должен проходить через это рекурсивно, не зная длины. Кто-нибудь может подсказать мне, пожалуйста?
void display(char str[])
{
if (*str) {
putchar(*str);
display(str+1);
}
}
Строки C (при условии, что ваш символьный массив является строкой C), должны иметь нулевое окончание. Таким образом, вы можете, например, использовать рекурсивную функцию для вычисления длины и искать нулевой символ для вашего базового случая, чтобы знать, что вы сделали.
Как упоминали @abelenky и @Nathan, предполагается, что массив символов заканчивается нулевым символом (обычно '\0'
).
Вот пример того, как узнать количество символов
unsigned int strLen( const char[] str ) {
unsigned int len = 0;
while( str[len] ) {
len++;
}
return len;
}