Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Einfache Dos Ausgabe

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.07.2005, 09:08 Uhr
~n00b
Gast


Moin!

Zweiter Tag c++ nach 1.5 Jahren Java!

Folgendes Programm:


C++:

# include <stdio.h>
# include <stdlib.h>

/*
** Das erste C-Programm (Kap. 3.8.1)
*/


main()
    {
    int z;
    int n;
    int a;
    int x;
    
    printf( "Zu teilende Zahl: ");
    scanf( "%d", &z);
    printf( "Teiler: ");
    scanf( "%d", &n);
    printf( "Anzahl Nachkommastellen: ");
    scanf( "%d", &a);
    x = z/n;
    printf( "Ergebnis = %d.", x);
    for( ; a > 0; a = a - 1)
        {
        z = 10*(z - n*x);
        if( z == 0)
            break;
        x = z/n;
        printf( "%d", x);
        }
    printf( "\n");
    }



Warum schliesst das Ergebnis Fenster so schnell, dass man nix sehen kann.

Sind in dem Quelltext Fehler???

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.07.2005, 09:10 Uhr
Pler
Einer von Vielen
(Operator)


da musst du schon noch ne extra abfrage einbauen. Standard ist doch, dass sich das Programm sofort beendet.
Um die ausgaben richtig zu sehen kannst du die exe auch manuell aus ner dos-box starten.

Einfach gets auch, wenn du ein
getch();
oder sowas ans ende des Programms setzt;

C++:
printf( "Taste, um das Prog. zu beenden\n" );
fflush(  stdin );
getch(); //bzw. getchar();


Dieser Post wurde am 26.07.2005 um 09:13 Uhr von Pler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.07.2005, 09:56 Uhr
~n00b
Gast


@Pler: Vielen Dank.funzt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.07.2005, 10:30 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ansonsten sollte man fflush(stdin); vermeiden, das ist undefiniert was da genau passiert, unter windows flushts den eingabepuffer (das was pler bezweckt hat) unter unix und co weiß man nicht so genau was passiert
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.07.2005, 21:36 Uhr
Pler
Einer von Vielen
(Operator)


@flosoft
gibt es denn ne alternative zu fflush?
Ich hab immer fflush(stdout) unter linux benutzt (wenn man zb in eine datei schreibt und die ausgabe beobachten will) und das hat immer zuverlässig funktioniert.

was macht man sonst, um einfach ein enter oder irgendein tastendruck abzuwarten?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.07.2005, 22:03 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat:

As usual, there are some exceptions, check your compiler's documentation to see if it has a (non-portable) method for flushing input



Visual C++ / MSDN sagt dazu:


Zitat:

The fflush function flushes a stream. (...) If the stream is open for input, fflush clears the contents of the buffer.



Und das gilt dort auch für den stdin.

Ansonsten gibts (ka ob die so elegant funzt) z.b für linux folgende:


C++:
void fflushin()
{
  int c;
  while((c = getc(stdin)) != EOF)
    if(c == '\n') break;
}




Bearbeitung:

grad getestet, das funzt


--
class God : public ChuckNorris { };

Dieser Post wurde am 26.07.2005 um 22:08 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: