PROBLEM I type y as an option and it prints the text twice before prompting me again when it’s supposed to only print it once.
CORRECT OUTPUT (what im supposed to get but not getting):
Do you order FISH (Y/N)? y
Fish choice (K- Haddock, T- Halibut)
Do you order FISH (Y/N)? y
Fish choice (K- Haddock, T- Halibut)
Do you order FISH (Y/N)? n
Do you order CHIPS (Y/N)? n
Do you order DRINKS (Y/N)? y
Drinks choice (S- Softdrink, C- Coffee, T- Tea)
Do you order DRINKS (Y/N)? n
WRONG OUTPUT (the output I get)
Do you order FISH (Y/N)? y
Fish choice (K- Haddock, T- Halibut)
Do you order FISH (Y/N)? Fish choice (K- Haddock, T- Halibut)
Do you order FISH (Y/N)? y
Fish choice (K- Haddock, T- Halibut)
Do you order FISH (Y/N)? Fish choice (K- Haddock, T- Halibut)
Do you order FISH (Y/N)? n
Do you order CHIPS (Y/N)? Chips choice (C- Cut, R- Ring)
Do you order CHIPS (Y/N)? n
Do you order DRINKS (Y/N)? Drinks choice (S- Softdrink, C- Coffee, T- Tea):
Do you order DRINKS (Y/N)? n
RAW SOURCE (in case you want to compile it yourself and check whats up): http://pastebin.com/raw.php?i=mZ1jVrF0
SOURCE
#include <stdio.h>
#include <string.h>
int main() {
char fishYesNo, chipsYesNo, drinksYesNo;
char *typeOfFood;
do {
typeOfFood = "fish";
printf("Do you order FISH (Y/N)? ");
scanf("%c", &fishYesNo);
if (fishYesNo != 'n') {
printf("Fish choice (K- Haddock, T- Halibut) \n");
}
else if (fishYesNo == 'n') {
typeOfFood = "chips";
}
} while ((strcmp(typeOfFood, "fish")) == 0);
do {
typeOfFood = "chips";
printf("Do you order CHIPS (Y/N)? ");
scanf("%c", &chipsYesNo);
if (chipsYesNo != 'n') {
printf("Chips choice (C- Cut, R- Ring) \n");
}
else if (chipsYesNo == 'n') {
typeOfFood = "drinks";
}
} while ((strcmp(typeOfFood, "chips")) == 0);
do {
typeOfFood = "drinks";
printf("Do you order DRINKS (Y/N)? ");
scanf("%c", &drinksYesNo);
if (drinksYesNo != 'n') {
printf("Drinks choice (S- Softdrink, C- Coffee, T- Tea):\n");
}
else if (drinksYesNo == 'n') {
typeOfFood = "fish";
}
} while ((strcmp(typeOfFood, "drinks")) == 0);
}
This is a well-known conceptual error in C. The comp.lang.c FAQ (which I suggest you read) has a lot of information on this and other gotchas.
Explanation of what’s happening in your code (comp.lang.c FAQ list · Question 12.18b):
How to deal with it, from a review of
scanf‘s problems (comp.lang.c FAQ list · Question 12.20):