i messed up with or statement i guess!

+1 imran LP · January 31, 2015
Okay ! so i was trying out tutorial 22 in codeblocks.the problem is whenever i enter something that starts from either y or n it the output is "good job you didn't mess up anything" for example if i enter "yeaah , yo , yasgag or naaaa, nope , nadsfasfasd" anything which starts from n or y its accepting it i mean it doesn't prompt me saying "keyboard much ??" so.. i really don't know where am going wrong . This is my code . let me know where  am  going wrong. 




#include <stdio.h>
#include <stdlib.h>

int main()
{
  char answer;
  printf("do you like bagels? (y/n)\n");
  scanf(" %c", &answer);
 if((answer=='y')||(answer=='n'))
 {
     printf("good job u didnt mess  up anything");
 }
 else{
    printf("keyboard much?");
 }
  return 0;
}

Post a Reply

Replies

Oldest  Newest  Rating
+2 Steven vd_W · January 31, 2015
The statement only checks if the first letter is a 'n' or 'y', so you didn't really mess anything up 
but I'm not sure how to solve it though x).
+1 c student · January 31, 2015
observe the changes in your answer variable below:http://i.imgur.com/kY6KYxo.png
http://i.imgur.com/HsU7Xip.png
if you haven't guessed already, your variable answer is of char type and can only hold one char value.  when you call scanf() to read in a character, it will place the first character into your variable and essentially drop anything that follows.  feel free to have a browse through the scanf() man page.
 
if you want to include all of the following characters, you can declare a simple array for answer to hold in more characters and then str(n)cmp() it with (a) desired string(s).
0 imran LP · February 1, 2015
i get it ! well thanks that helped :happy:
  • 1

C

107,075 followers
About

One of the most popular languages of all time.

Links
Moderators
Bucky Roberts Administrator