О, этот жестокий, глупый мир...
переведено 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__)