29 нояб. 2009 г.

Правильный способ проверить является ли C строка пустой

Правильный способ проверить является ли C строка пустой

Это делается так:
char *s;
// .. do something with s ...
if (!*s) printf("empty!\n");
или вот так:
if (0 == *s) printf("empty!\n");
Я предпочитаю второй вариант, на мой взгляд, он нагляднее. Но в принципе неважно, какой из этих способов использовать.

Наиболее популярные неправильные способы:
  • if (0 == strlen(s)) printf("empty\n");
  • if (0 == strcmp(s, "")) printf("OMG, empty!\n");
И это не шутка, сегодня я встретил такой код в двух независимых ревью.

P.S. Есть известная шутка о том, как иностранные программисты проверяют булевские переменные на истинность:
if (4 == strlen(bool2str(value))) printf("its true!\n");

переведено ksenks

Комментариев нет:

Отправить комментарий