Как проверить, указывает ли переменная char*
на пустую строку?
Как проверить, указывает ли переменная char * на пустую строку?
Ответ 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 */ }