Wednesday 15 September 2010

c - Why does scanf function get automatically previous '\n' value and how can I escape from this event? -



c - Why does scanf function get automatically previous '\n' value and how can I escape from this event? -

i'm not new @ writing code. i'm learning c language. cannot understand subject. perhaps not issue issue me. please explain that?

here code, encounter this:

#include <stdio.h> int main(int argc, char *argv[]) { char letter; while (1) { printf("enter letter:\n"); scanf("%c", &letter); switch (letter) { case 'a': case 'a': case 'e': case 'e': case 'i': case 'i': case 'u': case 'u': case 'o': case 'o': printf("%c vowel letter.\n", letter); break; case 'y': case 'y': printf("%c vowel letter.\n", letter); break; default: printf("%c not vowel letter.\n", letter); } } homecoming 0; }

output:

enter letter: a vowel letter. come in letter: not vowel letter. come in letter:

change format "%c" " %c" create scanf discard whitespace (as determined isspace(), " \v\f\r\n\t" in posix , c locales) before assigning next character, whatever may be.

maybe improve alternative, read whole line fgets , utilize sscanf parse instead.

as aside, take care scanf can fail. on success, returns number of assigned arguments. also, suggest read scanf-manpage linked above (or better, c standard on scanf), because there quite lot of pitfalls may not know yet.

c scanf

No comments:

Post a Comment