June 26, 2002
#include
int check_if_y(char answer){
if(answer == 'y')
return 1;
else
return 0;
}
int main()
{
char answer;
while(1){
printf("Enter y/nn");
scanf("%c", &answer);
if(check_if_y(answer))
printf("Yesn");
else
printf("Non");
}
return 0;
}
Det här lilla meningslösa programmet ska skriva ut "yes" om man matar in 'y' och No annars.. men det fungerar inte som det ska.. Kan nån förklara varför?
/Nybörjare :blink: (kan dock java o assembler :bok: )
February 28, 2004
jeremy1984 wrote:
#include
int check_if_y(char answer){
if(answer == 'y')
return 1;
else
return 0;
}int main()
{
char answer;
while(1){
printf("Enter y/nn");
scanf("%c", &answer);
if(check_if_y(answer))
printf("Yesn");
else
printf("Non");
}
return 0;
}Det här lilla meningslösa programmet ska skriva ut "yes" om man matar in 'y' och No annars.. men det fungerar inte som det ska.. Kan nån förklara varför?
Jag skulle skriva om din kod helt och hållet.
******************************************
#include
#include
int loop=1;
char answer;
int main()
{
while(loop == 1)
{
printf("nPress q to quit n");
printf("Enter y/n n");
cin >> answer;
if(answer == 'y')
{
printf("nYes n");
}
else if(answer == 'n')
{
printf("nNo n");
}
else if(answer == 'q')
loop=0;
}
return 0;
}
Detta program skriver ut Yes om man skriver in y och No om man skriver in n. för att avsluta programmet trycker man q(vilket jag har förklarat högst upp när det startas)
Jag var dock tvungen att lägga till ett ytterliggare bibliotek som du ser(iostream.h)
June 26, 2002
beirut_nisse wrote: if, else och else if finns väl i C?... eller har jag fel?....
och sen kom jag inte på hur det var man skrev istället för cin>>answer;
det är iaf c++
Jodå! Men inte cin..
Tack för hjälpen, men syftet är inte att göra själva programmet utan mest att lära mig utav mina misstag osv.. Så jag undrar vad som blir fel med min kod?
Verkar som om scanf sparar typ inmatning till nästa loop... och att enter sparas oxå :S Eller?
January 15, 2004
När du skriver in 'y' och trycker på return-tangenten så kommer 'y' NEW_LINE och att läsas från stdin.
Först läses y:et in i scanf() funktionen och "yes" kommer att skrivas ut.
I nästa iteration av while loopen läses NEW_LINE in i scanf funktionen och efter som det inte är 'y' så skrivs "no" ut.
För att lösa detta finns det åtminstone två metoder.
Den ena är att slänga allt som finns på stdin genom att skriva
fflush(stdin);
efter att du läst av teknet. Detta kommer resultera i att det irriterande NEW_LINE tecknet kommer att tas bort.
En annan metod är att skippa alla tecken som inte syns, t.ex. newline. Detta kan du göra genom att skriva
scanf("%1s",&answer);
istället.
Du kommer dock fortfarande att få problem med inmatningar som t.ex. "myra" som ger följade utskrift.
Enter y/n
myra
No
Enter y/n
Yes
Enter y/n
No
Enter y/n
No
Enter y/n
Detta är för att den behandlar de fyra tecknena 'm', 'y', 'r' och 'a' i vars en iteration av while loopen.
June 26, 2002
ren wrote: När du skriver in 'y' och trycker på return-tangenten så kommer 'y' NEW_LINE och att läsas från stdin.
Först läses y:et in i scanf() funktionen och "yes" kommer att skrivas ut.
I nästa iteration av while loopen läses NEW_LINE in i scanf funktionen och efter som det inte är 'y' så skrivs "no" ut.För att lösa detta finns det åtminstone två metoder.
Den ena är att slänga allt som finns på stdin genom att skriva
fflush(stdin);
efter att du läst av teknet. Detta kommer resultera i att det irriterande NEW_LINE tecknet kommer att tas bort.
En annan metod är att skippa alla tecken som inte syns, t.ex. newline. Detta kan du göra genom att skriva
scanf("%1s",&answer);
istället.
Du kommer dock fortfarande att få problem med inmatningar som t.ex. "myra" som ger följade utskrift.
Enter y/n
myra
No
Enter y/n
Yes
Enter y/n
No
Enter y/n
No
Enter y/n
Detta är för att den behandlar de fyra tecknena 'm', 'y', 'r' och 'a' i vars en iteration av while loopen.
Precis ett sånt svar jag väntade på 🙂 Var lite det problemet jag misstänkte då..
Tack så hemskt mycket!
November 23, 2001
Säg till om du har fler problem, jag läste en kurs i C för mindre än ett halvår sen och har kvar alla möjliga projekt och labbar..
Kan tipsa om vår gamla kurshemsida:
http://www.idt.mdh.se/kurser/c.....01/vt2005/
Där kan du läsa igenom föreläsningarna (rekommenderar faktiskt HTML-versionen), det finns många bra tips..
Och en annan sida man kunde kika på ibland (lite jobbigare, men det är ju ändå på svenska):
http://www.idt.mdh.se/kurser/c...../dlnweb02/
Nu är det väl säkert så att du inte har svårt för engelska, men det är ganska skönt med lite material på svenska också.
1 Guest(s)