snwprintf - standard

G

Googler

Also is snprintf (the non-unicode version) standard ?
in either C90 or C9x ?

If snprintf is standard, what are similiar results for snprintf ?

i.e.

char s[100];

snprintf(s,5,"Hello");

What should snprintf return ?
What should be in the buffer 's' ?

snprintf(s,4,"Hello");

Likewise for the above.
 
W

William Ahern

If snprintf is standard, what are similiar results for snprintf ?

char s[100];

snprintf(s,5,"Hello");

7.19.6.5 The snprintf function
|
| Synopsis
|
| #include <stdio.h>
| int snprintf(char * restrict s, size_t n,
| const char * restrict format, ...);
|
| Description
|
| The snprintf function is equivalent to fprintf, except that the output
| is written into an array (specified by arguments) rather than to a
| stream. If n is zero, nothing is written, and s may be a null
| pointer. Otherwise, output characters beyond the n-1st are discarded
| rather than being written to the array, and a null character is written
| at the end of the characters actually written into the array. If copying
| takes place between objects that overlap, the behavior is undefined.
|
| Returns
|
| The snprintf function returns the number of characters that would have
| been written had n been sufficiently large, not counting the terminating
| null character, or a negative value if an encoding error occurred. Thus,
| the null-terminated output has been completely written if and only if
| the returned value is nonnegative and less than n.


What should snprintf return ?

The snprintf function returns the number of characters that would
have been written had n been sifficiently large.
What should be in the buffer 's' ?

If n is zero, nothing is written, and s may be a null pointer.
Otherwise, output characters beyond the n-1st are discarded rather
than being written to the array, and a null character is written at
the end of the characters actually written into the array.
snprintf(s,4,"Hello");

Likewise for the above.

re-read above
 
M

Michael B Allen

Since this is a confusing point, it should be noted that the wide
character functions do not necessarily use Unicode as the wchar_t
charset. Also many of the regular char functions can handle Unicode if
the internal encoding is UTF-8.

Having said that, most mainstream libraries *do* use Unicode values for
wchar_t and it is pretty hard to write a program without manking any
assumptions about the internal encoding at all.

Mike
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

Adding adressing of IPv6 to program 1
snwprintf - standard 1
How to write a function to wrap snprintf? 5
snprintf() return value 14
mutux with popen 4
print bits of unsigned value 7
C pipe 1
Query on pointers 15

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,007
Latest member
obedient dusk

Latest Threads

Top