sprintf should raise error when the number of arguments does not match the number of format specifiers
sprintf with correct number of format specifiers, arguments
sprintf('%s', 'hello')
=> "hello"
sprintf with a single format specifier and two arguments
sprintf('%s', 'hello', 'world!')
=> "hello"
sprintf with three format specifiers and two arguments
sprintf('%s-%s-%s', 'hello', 'world!')
ArgumentError: too few arguments
from (irb):3:in sprintf' from (irb):3 from /home/chaitanyav/development/tools_64/bin/irb:12:in '
ruby -v changed from ruby -v [12:11:28] ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux] to -
check for similar behaviour of sprintf in a c program
This is a GCCism, not a universal C behaviour. Â If you think sprintf should warn because C does, that is a false assertion.
But I can't imagine any useful usecase of current behavior. And Java's
printf throw IllegalFormatException in this case. So, I think this has
a enough worth of discussion.
check for similar behaviour of sprintf in a c program
This is a GCCism, not a universal C behaviour. If you think sprintf should warn because C does, that is a false assertion.
I encountered this issue today, i was missing a format specifier in my code and it took sometime to figure it out. It would be nice if there was a warning/error this case.