О, этот жестокий, глупый мир...
переведено ksenks
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");
if (4 == strlen(bool2str(value))) printf("its true!\n");
#include <stdio.h> #ifdef _MSC_VER // workaround for MS VC #define snprintf(b, bsz, f, ...) \ _snprintf_s(b, bsz, _TRUNCATE, f, __VA_ARGS__) #endif #define LOG_LEVEL 2 #define LOG(lvl, ...) do { \ if (LOG_LEVEL < lvl) break; \ char b[1024]; \ snprintf(b, sizeof(b) - 1, __VA_ARGS__); \ b[sizeof(b) - 1] = 0; \ printf("%i! %s\n", (int)(lvl), b); \ } while(0 == __LINE__)