Подтвердить что ты не робот

Как проверить, указывает ли переменная char * на пустую строку?

Как проверить, указывает ли переменная char* на пустую строку?

4b9b3361

Ответ 1

Проверьте, является ли первый символ "\ 0". Вероятно, вы также должны проверить, является ли ваш указатель NULL.

char *c = "";
if ((c != NULL) && (c[0] == '\0')) {
   printf("c is empty\n");
}

Вы можете поместить обе эти проверки в функцию, чтобы сделать ее удобной и легкой для повторного использования.

Изменить: В инструкции if можно прочитать так: "Если c не равен нулю, а первый символ символьного массива" c "не равен" \0 "или нулю, тогда...".

&& просто объединяет два условия. Это в основном как сказать это:

if (c != NULL) { /* AND (or &&) */
    if (c[0] == '\0') {
        printf("c is empty\n");
    }
}

Вы можете захотеть получить хорошую книгу программирования C, если вам это не ясно. Я мог бы порекомендовать книгу под названием "Язык программирования C".

Самая короткая версия, эквивалентная приведенному выше, будет:

if (c && !c[0]) {
  printf("c is empty\n");
}

Ответ 2

Проверьте указатель на NULL, а затем с помощью strlen, чтобы узнать, возвращает ли он 0.
Проверка NULL важна, потому что передача указателя NULL на strlen вызывает Undefined Поведение.

Ответ 3

Мой предпочтительный метод:

if (*ptr == 0) // empty string

Вероятно, более часто:

if (strlen(ptr) == 0) // empty string

Ответ 4

Пустая строка имеет один единственный нулевой байт. Итак, тест if (s[0] == (char)0)

Ответ 5

Я бы предпочел использовать функцию strlen, поскольку библиотечные функции реализованы наилучшим образом.

Итак, я бы написал  if (strlen (p) == 0)//Пустая строка

Ответ 6

Дайте ему шанс:

Попробуйте получить строку через функцию gets (string) затем проверьте условие как будто (string [0] == '\ 0')

Ответ 7

if (!*ptr) { /* empty string  */}

аналогично

if (*ptr)  { /* not empty */ }