myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

C: OS unabhängige Pause

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 01.01.13, 15:57   #1
HagenTronje
Erfahrener Newbie
 
Registriert seit: Dec 2010
Beiträge: 162
Bedankt: 18
HagenTronje gewöhnt sich langsam dran | 28 Respekt Punkte
Standard C: OS unabhängige Pause

Wenn das Programm abgelaufen ist, möchte man ja, das es sich nicht gleich schließt, sondern der User Zeit hat, sich die Ergebnisse anzusehen.
Unter Windows geht das ja schön mit system("Pause");
unter Linux funktioniert das nicht.

Was wäre die Systemunabhängige alternative?
getch() geht ja auch nichts, weils conio.h nicht gibt angeblich heißt das in Linux curses.h, aber wenn ich die einbinde, kann ichs ja wieder nicht für Windows compelieren.

Ich möchte die Selbe C Datei, ohne Anderungen, für Windows und Linux compelieren können.

Frohes neues Jahr
HagenTronje
__________________
Blödsinnige Beiträge, bitte einfach löschen!
HagenTronje ist offline   Mit Zitat antworten
Ungelesen 01.01.13, 17:12   #2
ProgMaster
Banned
 
Registriert seit: Mar 2012
Beiträge: 337
Bedankt: 93
ProgMaster ist noch neu hier! | 0 Respekt Punkte
Standard

getchar() sollte es tun.
ProgMaster ist offline   Mit Zitat antworten
Ungelesen 01.01.13, 19:20   #3
Madddin_89
Newbie
 
Registriert seit: Jun 2010
Beiträge: 57
Bedankt: 10
Madddin_89 ist noch neu hier! | 0 Respekt Punkte
Standard

ich würde es mit den
preprozessor anweisungen regeln:

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Madddin_89 ist offline   Mit Zitat antworten
Ungelesen 01.01.13, 20:39   #4
HagenTronje
Erfahrener Newbie
 
Registriert seit: Dec 2010
Beiträge: 162
Bedankt: 18
HagenTronje gewöhnt sich langsam dran | 28 Respekt Punkte
Standard

Für getchar müsste ich zuerst den Tastaturpuffer leeren. wirkt doch Ziemlich unprofessionell wenn ich nur für die Pause dann 4 Zeilen brauche, oder?

Von der verlinkten Seite versteh ich nur Bahnhof.
__________________
Blödsinnige Beiträge, bitte einfach löschen!
HagenTronje ist offline   Mit Zitat antworten
Ungelesen 01.01.13, 21:21   #5
Madddin_89
Newbie
 
Registriert seit: Jun 2010
Beiträge: 57
Bedankt: 10
Madddin_89 ist noch neu hier! | 0 Respekt Punkte
Standard

ganz einfach:

du wolltest dein Programm tauglich für windows und linxu machen.

falls du eine stelle im Code hast, dass sich unterscheidet, schreibst du sowas:

#ifdef __linux__
- code für
- linux
#endif
#ifdef _win32
- code für
- windows
#endif

das sind einfach anweisungen für den Compiler.
Funktioniert natürlich auch mit Includes, falls eine z.b. nur bei linux existiert.

Hoffe du hast es jetzt ein bisschen besser verstanden
Madddin_89 ist offline   Mit Zitat antworten
Ungelesen 01.01.13, 21:23   #6
Quabla
Mitglied
 
Registriert seit: Oct 2010
Beiträge: 299
Bedankt: 151
Quabla ist noch neu hier! | 0 Respekt Punkte
Standard

du kannst überprüfen ob varaiblen definiert sind, und damit dann auf das betriebssystem schließen. so wie es da in nem bespiel steht:

Code:
#if defined(sun) || defined(__sun)
# if defined(__SVR4) || defined(__svr4__)
/* Solaris */
# else
/* SunOS */
# endif
#endif
dann müsstest du halt ne fallunterscheidung für verschiedene betribssysteme einbauen

edit: oh da war einer schneller
Quabla ist offline   Mit Zitat antworten
Ungelesen 01.01.13, 21:30   #7
HagenTronje
Erfahrener Newbie
 
Registriert seit: Dec 2010
Beiträge: 162
Bedankt: 18
HagenTronje gewöhnt sich langsam dran | 28 Respekt Punkte
Standard

ich glaube da bin ich mit ner Schleife zum Buffer löschen und getchar() besser dran :O

Wie macht ihr das denn bei euren Programmen?
__________________
Blödsinnige Beiträge, bitte einfach löschen!
HagenTronje ist offline   Mit Zitat antworten
Ungelesen 01.01.13, 21:31   #8
Madddin_89
Newbie
 
Registriert seit: Jun 2010
Beiträge: 57
Bedankt: 10
Madddin_89 ist noch neu hier! | 0 Respekt Punkte
Standard

doppelt gemoppelt hält ja bekanntlich besser :P

übrigens, ist "scanf()" nicht noch ne option für dein problem?
das gibt es bei beiden OS
Madddin_89 ist offline   Mit Zitat antworten
Ungelesen 01.01.13, 21:31   #9
ProgMaster
Banned
 
Registriert seit: Mar 2012
Beiträge: 337
Bedankt: 93
ProgMaster ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von HagenTronje Beitrag anzeigen
Für getchar müsste ich zuerst den Tastaturpuffer leeren. wirkt doch Ziemlich unprofessionell wenn ich nur für die Pause dann 4 Zeilen brauche, oder?

Von der verlinkten Seite versteh ich nur Bahnhof.
Schreib eine Helper-Methode und Du hast eine oder zwei Zeilen!
Unprofessionell wäre es in eine so triviale Sache viel Zeit zu investieren, wenn man eine saubere Lösung in weniger als fünf Zeilen schreiben kann. Alles andere wäre Overhead...

Und welches "professionelle" Programm kümmert sich um die Konsolenausgabe beim Schliessen des Programms? Ich denke keines davon wird damit werben, dass die Pause plattformunabhängig und mit einer Zeile Code geschrieben wurde
ProgMaster ist offline   Mit Zitat antworten
Ungelesen 02.01.13, 01:06   #10
HagenTronje
Erfahrener Newbie
 
Registriert seit: Dec 2010
Beiträge: 162
Bedankt: 18
HagenTronje gewöhnt sich langsam dran | 28 Respekt Punkte
Standard

Aber was wenn mein Programm nur in der Konsole läuft und bewertet wird? :P
__________________
Blödsinnige Beiträge, bitte einfach löschen!
HagenTronje ist offline   Mit Zitat antworten
Ungelesen 02.01.13, 15:08   #11
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 309
Bedankt: 301
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Dann soll dein Bewerter dein Programm in der Konsole starten.
germgerm ist offline   Mit Zitat antworten
Ungelesen 03.01.13, 23:21   #12
HagenTronje
Erfahrener Newbie
 
Registriert seit: Dec 2010
Beiträge: 162
Bedankt: 18
HagenTronje gewöhnt sich langsam dran | 28 Respekt Punkte
Standard

es braucht aber trotzdem ne Pause bevor sichs beendet!
__________________
Blödsinnige Beiträge, bitte einfach löschen!
HagenTronje ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:10 Uhr.


Sitemap

().