Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
666 views
in Technique[技术] by (71.8m points)

c - printf outputting garbage instead of specific characters

Well I've weird problem with printf(). It's outputting garbage on screen. It's kind of connected with memory I guess. Have a look:

char string1[] = "SAMPLE STRING";
char string2[20]; // some garbage in it

/* let's clear this madness*/
int i = 0;
for (i; i < 20; i++) string2[i] = ' ';   // Space, why not.

printf("output: %s", string2);

OUTPUT

output:      ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠SAMPLE STRING
// ten spaces and random characters, why?
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Because C strings need to be NUL terminated. This means the last char of your string must be ''. This is how printf (and all other C string functions) know when a string is finished.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...