What's the Difference Between %Ul and %Lu C Format Specifiers?
In an Example of "C Primer Plus", the Author Has Used %Ul Format Specifier (In Both Scanf and Printf) for Unsigned Long. When I Try to Generalize the Problem...
In an example of "C Primer Plus", the author has used %ul format specifier (in both scanf and printf) for unsigned long. When I try to generalize the problem, it seems that the %ul makes something wrong in my computer. But using %lu solved the issue.
Actually, rather than focusing on the problem and the line of codes, I want to know about the difference between %ul and %lu. Maybe I could figure out what's wrong.
Searching doesn't give me something useful (except that "they are different").
Any explanation or link/reference is appreciated.
1 Answer
%lu is correct, while %ul is incorrect.
A printf format specifier follows the form %[flags][width][.precision][length]specifier.
u is a specifier meaning "unsigned decimal integer".
l is a length modifier meaning "long".
The length modifier should go before the conversion specifier, which means %lu is correct.