Testa med att lägga till:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
cin.get ();
I slutet av din funktion. ( Innan du avslutar den. )
22 svar · 1 119 visningar · startad av eas
Jag laddade ner DEV C++ idag!
Installationen gick fint men när jag testkörde upptäckte jag till min förskräckelse att mitt fina program stängde av sig när det hade körts klart!
Det gillar inte jag efter som jag förtfarande är på den nivån då man skriver lite kod, kompilerar och ser vad som händer.
Vad kan jag göra för att förhindra det, så att jag kan kolla på resultatet av koden jag kört?
Testa med att lägga till:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
cin.get ();
I slutet av din funktion. ( Innan du avslutar den. )
Näpp. Det beror på att när programmet tar slut, så ser operativsystemet ingen anledning att ha kvar fönstret uppe. Om cin.get() (eller motsvarande) inte funkar, vilket det borde göra, så prova att köra programmet från DOS-prompten. Att det inte funkar kan tyda på ett fel som leder till exekveringsavbrott...
Eller så kan det ju bero på att getch inte tillhör c-standarden utan är Borlands påhitt...
PhOrPhEr>>
eas >>
Men cin.get() ska iaf fungera... men om du petat in nån cin strax innan så KAN det hända att man får peta in cin.get() 2 ggr... om det ligger en vagnretur kvar i strömmen. Alternativt om det finns nåt debug-läge i dev-c++ som gör att man kan peta in breakpoints (stannar upp programmet) precis på sista raden innan return 0 i main. Fast det gäller ju medans du jobbar i IDEn..
Eller så använder man funktionen fflush med stdin som inargument.
Dvs. fflush(stdin); för att tömma inströmmen.
Använder man C++ så har ostream en metod flush() som man kan använda också.
Typ cout << flush;
Jag har provat nu, men det vill inte fungera.
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
#include <iostream.h>
main()
{
cout << "test" << endl;
return 0;
cout << flush;
cin.get();
cin.get();
}
vad göra?
Ta bort "return 0;".
return används när du vill att en funktion ska "avslutas" och returnera ett värde. I det här fallet avslutas main och 0 returneras till operativsystemet.
PhOrPhEr vi anävnder enbart Borland på vår skola, och i alla övningar avnänder man getch();
tittade i den här tråden häromdagen och la lite saker på minnet.
tog själv hem dev c++ och satte mig just för att pilla lite - då samma sak hände mig - som jag då lätt löste genom att titta in här och ta råden som givits;
cin.get(); två ggr.
toppen!
Damion:
Det är givetvis inte fel att använda getch(). Jag brukar också använda det ibland.
Ville bara poängtera att det inte tillhör standarden så man kan inte förvänta sig att det ska fungera om man vill kompilera med en annan kompilator.
...sen är det väl inte så svårt att köra sitt lilla program i prompten ist
Tycker att PhOrPhEr hade ett bra tips med fflush(), annars
Man kan använda getch() om man inkluderar en header-fil.
tror det är conio.h eller nåt sånt...
om jag bara skriver cin>>i; strax innan return 0; förskuter jag ju problemet så jag kan se utskriften av programmet.
Använder själv DEV C++ och var också med om detta problemet i början. Kollade dock i hjälpfilen där det stod hur man skulle göra. Inkludera stdlib.h och lägg till system("PAUSE"); på raden innan return 0; så ska det nog fungera.
Är det förresten nån som vet varför det finns parametrar i definitionen av main?
int main(int argc, char *argv[])
Därför att du ska kunna ta in parametrar när du startar programmet?
argc - Integer som innehåller antalet argument
argv - Dubbelpekare till argumenten som skickas in. *argv[1] är första argumentet osv.
Hur kan man skicka argument till funktionen main då?
Man anropar den ju aldrig i koden.