Jaffe Skrevet 24. august 2007 Del Skrevet 24. august 2007 (endret) Jeg tror ikke det går en eneste uke uten at en eller annen presterer å lage en tråd om at det splitter nye Hello World-programmet bare åpner og lukker seg med en gang. Til deg med dette problemet: Du er ikke alene, du kan søke hjelp. Ja, faktisk, bokstavelig talt søke. Forumet er proppfullt av tråder med akkurat samme problemstilling, og det står faktisk om det i en av stickytrådene, "Ofte stilte spørsmål med tilhørende svar". Jeg siterer den tråden: 6. Når jeg kjører programmet kommer det en svart boks på skjermen i et lite sekund, og det skjer ikke noe mer. Hva er galt?Når programmet er ferdig med å kjøre, med andre ord nesten med én gang, lukker det seg igjen (programmet returnerer). Problemet er at terminalen/konsollet programmet kjører i også lukkes igjen når programmet er ferdig. Det er flere måter å løse dette på: - Kjør programmet direkte fra en terminal, fremfor å dobbeltklikke på ikonet. Da vil ikke terminalen lukke seg igjen etterpå. - Sørg for at programmet venter på inndata før det lukker seg igjen. Du kan lese i denne tråden for en ekstensiv diskusjon om hva man kan gjøre og hva man bør gjøre. For nybegynnere er det vel bare kode som må til for å hjelpe (og ikke bare veiledning). Legg til følgende i slutten av programmet (slutten av main, før return): I C: fflush(stdin); getchar(); I C++ (av staalezh): cin.ignore(numeric_limits<int>::max(), '\n'); cin.get(); Et annet alternativ, om du bruker Visual C++: I VC++, start applikasjonen med CTRL+F5, så slipper man å dytte inn kode for å vente på tastetrykk ved avslutning. Ikke alltid denslags er hensiktsmessig. Om du bruker XCode i OS X: Her trengs ingen av disse ekstra linjene da "Run log" ikke lukker seg. Men "Run log" kan bli lang og uoversiktlig noe som kan fikses ved å trykke på X nederst til høyre. Late Windows-brukere kan benytte system-funksjonen til å kalle pause-kommandoen. Legg til i slutten av main, før return: system("pause"); Endret 20. mars 2008 av Jaffe Lenke til kommentar
einaros Skrevet 24. august 2007 Del Skrevet 24. august 2007 Eller, i VC++, start applikasjonen med CTRL+F5, så slipper man å dytte inn kode for å vente på tastetrykk ved avslutning. Ikke alltid denslags er hensiktsmessig. Lenke til kommentar
Zeph Skrevet 24. august 2007 Del Skrevet 24. august 2007 Hjelpetrådar er alltid velkomne på forumet, og denne blir "premiert" med sticky. Lenke til kommentar
magnus Skrevet 25. august 2007 Del Skrevet 25. august 2007 XCode under OS X Her trengs ingen av disse ekstra linjene da "Run log" ikke lukker seg. Men "Run log" kan bli lang og uoversiktlig noe som kan fikses ved å trykke på X nederst til høyre. Lenke til kommentar
GeirGrusom Skrevet 25. august 2007 Del Skrevet 25. august 2007 Det tror jeg er første gang noensinne at jeg har hørt noen si noe som helst om programmering under mac os.... Lenke til kommentar
Frysning Skrevet 25. august 2007 Del Skrevet 25. august 2007 Haha, ja! Det er første gang i min tid her på forumet iallefall, det må jeg si. Mac er vel egentlig ikke for utvikling da, det brukes vel i all hovedsak til design. Mediaklassen har Mac, mens resten av winboxer. Ja, det var bra den fikk sticky. Takk til deg Zeph for å stikke innom denne delen av forumet, tror andre frykter det eller ikke bryr seg. Lenke til kommentar
Matsemann Skrevet 12. januar 2008 Del Skrevet 12. januar 2008 (endret) Et lite tips til meg selv: Legg dette til før "return 0;" i C++. Er det ikke utrolig at min Hello World resulterer i dette: ??? ENDRET: Beklager stort bilde. Dere ser jeg la til dette her i tråden helt til slutt, litt for langt til slutt, så programmet sendte jo return før denne koden rakk å slå ut. Endret 12. januar 2008 av Matsemann Lenke til kommentar
GeirGrusom Skrevet 14. januar 2008 Del Skrevet 14. januar 2008 hmmm burde ikke compileren bare si "Unreachable code detected"? :S dette har jeg aldri sett før, men det kan være fordi jeg ikke bruker Dev-C++... Men det funker fint hvis du sletter de siste linjene, eller flytter dem før return 0;? Lenke til kommentar
Matsemann Skrevet 14. januar 2008 Del Skrevet 14. januar 2008 (endret) Jepp, og programmet virket alle andre ganger jeg kjørte det slik (annet enn at konsollvinduet lukket seg om jeg ikke kjørte det via CMD). Men fikk en liten støkk der: "Uaa! Kopierer Hello World! fra nettet og hele maskinen krasjer, hvordan skal dette ende?" :!: ENDRET: Gjorde script om til program, da jeg så andre klagde på det i en annen tråd. ^^ Endret 14. januar 2008 av Matsemann Lenke til kommentar
aC Skrevet 14. mars 2008 Del Skrevet 14. mars 2008 denne tråden er litt gammel så beklager hvis jeg bumper tråden eller noe, men man kan også kalle windows sin pause funksjon ved enten bruk av execve eller system("pause"); getchar() er rent pragmatisk sett endel bedre for å slippe overhead ved kall på eksterne kommandoer. Dette er også standard i Dev-cpp sin ide Lenke til kommentar
GeirGrusom Skrevet 14. mars 2008 Del Skrevet 14. mars 2008 Ærlig talt er jeg ikke noen tilhenger av system kommandoen. Det er litt... lettvint og ineffektivt. Lenke til kommentar
aC Skrevet 18. mars 2008 Del Skrevet 18. mars 2008 (endret) Ja jeg er veldig enig desuten ser jeg at "execve" er et unix system kall, så jeg tror kanskje ikke den funker på windows (Selv om at den "CONFORMING TO POSIX"). Men men det er jo en mulighet å bruke "system" selv om den suger og da burde den jo være med i denne tråden Edit, leif Endret 18. mars 2008 av aC Lenke til kommentar
Noxius86 Skrevet 13. desember 2008 Del Skrevet 13. desember 2008 Går det ann å legge til en slags timer? sånn at "hello world" vises i f.eks 5sec før den lukker seg? Jeg bruker mac + xcode, så loggen blir jo liggende, men planen er ettervært å gå til innkjøp i en winbox, så konsentrer meg å lære win programmering Lenke til kommentar
Dead_Rabbit Skrevet 13. desember 2008 Del Skrevet 13. desember 2008 Det går an å lage en timer ja. Har ikke testa det, men noe slikt som dette burde vel fungere: #include <WhateverYouNeed.h> void wait(int s) { clock_t time = clock(); while((clock()/CLOCKS_PER_SEC) < (time/CLOCKS_PER_SEC + s)) ; } int main(int argc, char* argv[]) { // .... wait(5); return 0; } Lenke til kommentar
Kaptein Snus Skrevet 14. januar 2009 Del Skrevet 14. januar 2009 I og med at det er en sticky så vil vell folk komme innom til tider, så da håper jeg det går bra med sein post. Det jeg ofte bruker er rett og slett bare cin.get() eller en kombinasjon med cin.get() og cin.ignore() hvis jeg trenger en pause i programmet. cin.get() #include <iostream> using namespace std; int main(){ cout << "Hei!" << endl; cout << "\n\n"; //valgfri cout << "Press enter to continue.. "; //valgfri cin.get(); return 0; } eller legge til en function hvis du trenger det mange ganger, som f.eks i text-baserte RPGs. void Pause(){ cout << "\nPress enter to continue.."; cin.ignore(1, '\n'); cin.get(); } Det fungerer helt fint under OS X. Vet ikke hvordan det er når man bruker windows, men i OS X, hvis du bare skal printe ut noe så enkelt som "Hello World" trenger du bare å bruke return 0 så vil den stoppe og venter på en tast. Lenke til kommentar
residenevil Skrevet 5. februar 2009 Del Skrevet 5. februar 2009 nå får jeg det fram men det vil ikke komme fram noe tekst bare vinduet. det står ikke noe der. koden jeg bruker er: // my first program in c++ #include <iostream> using namespace std; int main () { cout << ''hello world!''; return 0; } cin.ignore(numeric_limits<int>::max(), '\n'); cin.get(); Lenke til kommentar
Mr.Garibaldi Skrevet 6. februar 2009 Del Skrevet 6. februar 2009 (endret) Det der skal ikke en gang kompilere... Feilene er: All koden må være innenfor { }. Videre vil ikke kode som kommer etter "return" bli utført. Du må bruke " " ikke '' '', som kan være vanskelig å se i denne tråden. "a" gir en string med verdi a. 'a' gir en char med verdi a. Så er det en feil i denne tråden, hvor det står at man bør bruke cin.ignore(numeric_limits<int>::max(), '\n'); cin.get(); uten å fortelle at man også må ha med følgende linje på toppen av koden #include <limits.h> Med de endringene får man følgende fungere kode: #include <iostream> #include <limits> using namespace std; int main () { cout << "hello world!"; cin.ignore(numeric_limits<int>::max(), '\n'); cin.get(); return 0; } Endret 6. februar 2009 av Mr.Garibaldi Lenke til kommentar
residenevil Skrevet 6. februar 2009 Del Skrevet 6. februar 2009 Det der skal ikke en gang kompilere... Feilene er: All koden må være innenfor { }. Videre vil ikke kode som kommer etter "return" bli utført. Du må bruke " " ikke '' '', som kan være vanskelig å se i denne tråden. "a" gir en string med verdi a. 'a' gir en char med verdi a. Så er det en feil i denne tråden, hvor det står at man bør bruke cin.ignore(numeric_limits<int>::max(), '\n'); cin.get(); uten å fortelle at man også må ha med følgende linje på toppen av koden #include <limits.h> Med de endringene får man følgende fungere kode: #include <iostream> #include <limits> using namespace std; int main () { cout << "hello world!"; cin.ignore(numeric_limits<int>::max(), '\n'); cin.get(); return 0; } nå funker det men er det noen som vet hvordan man kan få det til uten å starte kompilerings programmet for å kjøre det? Lenke til kommentar
GeirGrusom Skrevet 6. februar 2009 Del Skrevet 6. februar 2009 Du må kompilere et C++ program før du kan kjøre det. Men du trenger bare kompilere det én gang, så har du en .exe fil du kan bruke. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå