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