Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Komischer Fehler

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 ] > 2 <
010
11.09.2012, 06:54 Uhr
Rumeos



@0xdeadbeef


Zitat:
Was andere IDEs angeht, ich finde für Windows CodeLite ganz nett.


Ok vielen Dank. Werde ich mal ausprobieren.


@f.-th.

Beispiel:


C++:
#include <stdio.h>

void main(){
    
    /*Variabeln Deklarierung*/
    float x,y;

    /*---------------E-i-n-g-a-b-e--------------*/
    printf("Bitte geben sie x ein: ");
    scanf("%f",&x);
    fflush(stdin);
    
    printf("\n");

    printf("Bitte geben sie y ein: ");
    scanf("%f",&y);
    fflush(stdin);

    printf("\n\n");

    /*------------R-e-c-h-n-u-n-g-e-n------------*/

    /*Addition*/
    printf("%f + %f = %f\n",x,y,x+y);

    /*Subtraktion*/
    printf("%f - %f = %f\n",x,y,x-y);+

    /*Multiplikation*/
    printf("%f * %f = %f\n",x,y,x*y);

    /*Division*/
    printf("%f / %f = %f",x,y,x/y);
    
    getchar();
    
}


Wenn ich da kein fflush(stdin) reingegeben hätte würde es die Enter Taste als Zahl interpretieren und es würde die Eingabe dann sozusagen mit einer Entereingabe überspringen.
Wie soll man das ausser mit fflush(stdin) sonst überspringen?
--
Programmier-Anfänger (C am lernen)

http://pandfute.wordpress.com/
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
11.09.2012, 09:10 Uhr
~f.-th.
Gast


Was du statt

C++:
fflush(stdin);

setzen kannst, schrieb dir 0xdeadbeef in seiner ersten Antwort in den letzten Zeilen.


Ist das Buch nicht auch schon älter? Welche Ausgabe hast du? Steht da schon etwas von C99 oder C11 drin?
Als die ersten Ausgaben des Buches gedruckt wurden, waren noch relativ viele C-Dialekte auf dem Markt. C89 war da schon verabschiedet (?) aber nicht alle Compiler-Anbieter verfolgten das streng.

Meist kann man das einstellen -> compiler-spezifisches C oder (C89, C99 oder C11).
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
11.09.2012, 17:30 Uhr
Rumeos




C++:
int c;

do { c = getchar(); } while(c != EOF && c != '\n');


ist ja viel länger als


C++:
fflush (stdin);


So lange es geht werde ich es noch mit fflush stdin machen sonst weiss ich ja was eine Option wäre.


Zum Buch:

Ich habe die 19. Auflage von 2011, also eigentlich die neuste Version dieses Buches. Was für einen Dialekt dieses Buch einem lernt weiss ich leider nicht, es steht auch nirgends drinnen.
--
Programmier-Anfänger (C am lernen)

http://pandfute.wordpress.com/
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
11.09.2012, 17:45 Uhr
0xdeadbeef
Gott
(Operator)


Dann schreib dir halt eine Funktion drum:

C++:
void ignore_line(FILE *istream) {
  int c;
  do { c = fgetc(istream); } while(c != EOF && c != '\n');
}

...

ignore_line(stdin);


Aber hör mit diesem fflush-auf-Eingabeströmen-Unfug auf. Das funktioniert nur unter Windows mit manchen Compilern, und auch dann nur, wenn ein Mensch vor dem Terminal sitzt und du mit dem Dateideskriptor nicht herumgespielt hast (bzw. eine Bibliothek, die du benutzt, es getan hat). Es ist eine ganz schlechte Angewohnheit, die du dir gar nicht erst aneignen solltest. Tippfaulheit ist keine Ausrede!

Zumal dich nach den ersten Monaten Schonzeit jeder erfahrene C-Programmierer wegen solcher Dinge auslacht.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
11.09.2012, 19:28 Uhr
Rumeos



Ok ich werde es mir umgewöhnen
--
Programmier-Anfänger (C am lernen)

http://pandfute.wordpress.com/
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ 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: