Использовать strlen с scanf(% мс)
Можно ли использовать strlen()
над динамически размещаемой строкой?
НА ПРИМЕРЕ:
#include <stdio.h>
#include <string.h>
int main ()
{
char *input=NULL;
printf ("Enter a sentence: ");
scanf("%ms", &input);
//Is this legit?
printf ("The sentence entered is %u characters long.\n",(unsigned)strlen(input));
return 0;
}
1 ответ
Решение
Ты можешь использовать strlen()
на любой последовательности char
с заканчивается '\0'
нуль-символ ака NUL
* 1, который фактически равен 0
,
Неважно, как память была выделена.
Так что да, это также относится к " динамически выделяемой " памяти.
* 1: Не путать с NULL
, который является константой нулевого указателя.