Hej jag har nyss börjat programera med programet Dev c++. När jag försöker skriva programet så blinkar det bara till. Den stannar alltså inte i dos fönstret. Någen som vet av någon lösning? Tacksam för svar. Så här se scripten ut: Menar du när du kör programmet? Konstigt, det borde stanna och vänta på tangenttryckning pga system("PAUSE"). Har du kompilerat programmet? Kan det vara så att du inte får en bidirectional pipe till resultatet av ett system-anrop? Det betyder att system inte accepterar stdin och därmed så avslutar PAUSE utan att du har tryckt på en tangent? Det enda rätta svaret är helt enkelt att du kör programmet på fel sätt. Det program du får ut med din kod är ett konsoll-program. Det innebär att du bör köra programmet i konsollen. Om ett program är ett konsollprogram, körs det automatiskt i konsollen under Windows. Och eftersom där finns system("PAUSE"), så borde det vänta på en knapptryckning. Så, Niklas, ditt "recept" borde inte behövas. cin.get(); istället för system("PAUSE"); är ett annat sätt att lösa det på annars. <b>>Om ett program är ett konsollprogram, körs det automatiskt i konsollen under Windows. Och eftersom där finns system("PAUSE"), så borde det vänta på en knapptryckning. Så, Niklas, ditt "recept" borde inte behövas.</b> Jag håller med dig, Niklas, om att system("pause") inte är vackert, men det borde i vilket fall fungera och hindra programmet från att avslutas ("blinka till"). Det du skrev i ditt tidigare inlägg såg jag därför inte som någon lösning på problemet. cin.get(); är ett bra alternativ. Jag kom dock att tänka på att det kan behövas två cin.get-rader enligt följande:Dev c++
#include <iostream>
#include <stdlib.h>
using namespace std;
int main ()
{
cout << "test";
system("PAUSE");
return 0;
}Sv: Dev c++
Sv: Dev c++
/KSv:Dev c++
Alltså:
1. Kompilera programmet.
2. Tryck på Start->Kör... och skriv cmd, tryck ok.
3. Leta reda på din mapp med programmet med kommandot cd.
4. Skriv in programmets namn och tryck enter.
När du sen gör en ändring och vill köra det igen, så skriver du in namnet igen, eller trycker helt enkelt på uppåtpil och enter.
För övrigt bör ditt <stdlib.h> bytas ut mot <cstdlib>Sv: Dev c++
Sv: Dev c++
Sv:Dev c++
Ja, det gör det, men det har som standard att stänga ner konsollen efter programmet är kört.
system("PAUSE") är inte bra eftersom det inte riktigt är standard (ja, "system" är standard, men vad som händer när man anropar det är av naturliga skäl inte standard). Det är dessutom fult, och tillför inget till programmet, utan förebygger bara en brist.
cin.get är något bättre, men om man t.ex. matar in enter någon gång före cin.get så kommer det fortfarande avslutas.Då får man köra med cin.ignore, etc.. Det är inte helt omöjligt att det är samma fenomen här. Det har inte heller någon direkt relevans i koden, utan är bara en ful work-around.
Eller om man gör en analogi med HTML. Använd hellre "rena" element, och gör en snygg kod än att försöka lösa saker på det "enkla" sättet.Sv: Dev c++
Sv:Dev c++
cin.get();
cin.get();
return 0;
}
Alltså sist i int main()-funktionen.
Kolla förresten svaret i den ickeofficiella FAQ'en
http://aditsu.freeunixhost.com/dev-cpp-faq.html (1a frågan under Top 5)