Использовать 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 , который является константой нулевого указателя.

Другие вопросы по тегам