Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: printf for converting numbers to letters, bug?



On Mar 26, 12:00pm, Clint Adams wrote:
} Subject: Re: (Fwd) printf for converting numbers to letters, bug?
}
} > Looks like "%c" is interpreting the argument as a string and printing
} > the first character thereof.  It should work more like %d, shouldn't it?
} 
} Not according to POSIX; the argument to %b, %c, or %s is to be
} interpreted as a string.

Just to clarify my earlier comment:

Zsh is (as of 4.2.0) behaving such that, given x='101',

	printf "%c" $x
and
	print -r $x[1]

produce the same output.  That behavior is nearly useless.  (It is how
/usr/bin/printf on Linux works, though, so I guess it can be interpreted
as a compatibility issue.)
 
} If we had octal brace expansion, he could do something like
} printf "%b\n" \\0{101..145}

If %b interprets the string \0101 as an octal number and prints the
corresponding character, why shouldn't %c interpret the string 101 as a
decimal number and print the corresponding character?

I've just been looking at

  http://www.opengroup.org/onlinepubs/007904975/utilities/printf.html

I notice that although it mentions %b, there's NO definition of %b on any
of the pages it cross-references:

  http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap05.html
  http://www.opengroup.org/onlinepubs/007904975/functions/printf.html

Where is %b defined?



Messages sorted by: Reverse Date, Date, Thread, Author