#include #include enum { MAXPREC = -1 }; const char s[] = ""; int main(void) { int prec = -1; const char *sptr0 = (const char *)memchr(s, 0, (size_t)prec); printf("prec=%d (size_t)prec=%zu %p %p %p %p\n", prec, (size_t)prec, s, (const char *)memchr(s, 0, (size_t)-1), (const char *)memchr(s, 0, (size_t)prec), sptr0); for (prec = -1; prec <= MAXPREC; prec++) { printf("%zu ", strnlen(s, (size_t)prec)); const char *sptr = (const char *)memchr(s, 0, (size_t)prec); printf("prec=%d (size_t)prec=%zu %p %p %p %p\n", prec, (size_t)prec, s, (const char *)memchr(s, 0, (size_t)-1), (const char *)memchr(s, 0, (size_t)prec), sptr); printf("(%p/%p) %zu\n", s, sptr, sptr ? sptr - s : (size_t)prec); } fflush(stdout); return ferror(stdout); }