From: Jeff King Date: Thu, 07 Oct 2010 18:13:49 GMT Subject: Re: git log doesn't allow %x00 in custom format anymore? Message-ID: <20101007181349.GD18518@sigill.intra.peff.net> In-Reply-To: On Thu, Oct 07, 2010 at 08:05:20PM +0200, Erik Faye-Lund wrote: > >> I don't know which one would be most portable, but if fwrite is the > >> problem, then > >> > >>   printf("%*s%c", buf.buf, buf.len, info->hdr_termination); > >> > >> should do the trick. > > > > It does work, but you have to cast the buf.len size_t to an int. > > > I'm not sure how portable it is, though. This is what K&R has to say > on the matter: "characters from the string are printed until a ´\0´ is > reached or until the number of characters indicated by the precision > have been printed". To me it's not clear if that means that either > cases can terminate the printing when the precision has been > specified. I take it back. It doesn't actually work (I thought I had done this just recently, but clearly not). Try: #include int main() { char buf[] = "123456789"; buf[2] = '\0'; printf("%.*s\n", 5, buf); return 0; } It prints just "12" for me. -Peff