Printf fehler

01/29/2012 11:27 S7ZY#1
Hi leute,

ich hab vor paar Tagen mit C angefangen und benutze dabei die seite c-howto.de.

bin jetzt bei der Verzweigung Programmierung und habe einen Problem mit dem Beispiel von dort.

Code:
// Getraenke Automat Version 0.1

int einwurf=0;
printf("Getraenke Automat | Bitte werfen sie 1 Euro ein: "); //HIER IST DER FEHLER!
scanf("%d", &einwurf);

// überpruefe Geldstueck
if(einwurf == 1) {
	printf("\nVielen Dank, bitte entnehmen sie ihr Getraenk.\n");
}else {
	printf("\nSie haben kein 1 Euro Stueck eingeworfen.\n");
}
ich schreibe die programme-,schnipsel immer mit der Hand-selber ab und drücke auf F9. Bis jetzt war eigentlich alles richtig und gut aber hier bekomme ich immer den selben paramter fehler.

Ich hab nach dem Fehler gesucht aber ihn dort nicht gefunden und hab sogar die ganze Zeile kopiert und eingefügt und trotzdem funktioniert es immer noch nicht. Dann habe ich den ganzen Schnipsel kopiert und eingefügt und der funktioniert auch nicht.

Meiner:
Code:
#include<stdio.h>

//Mein Getränke Automat Ver.1.0

int einwurf=0;
printf("Getraenke Automat | Bitte werfen sie 1 Euro ein:1 "); //HIER!
scanf("%d", &einwurf);

// überpruefe Geldstück
if(einwurf == 1) {
	printf("\nVielen Dank, bitte entnehmen sie ihr Getraenk.\n");
}else {
	printf("\nSie haben kein 1 Euro Stueck eingeworfen.\n");
	system("PAUSE");
	return 0;
}
warum ist dort immer ein Fehler? bei anderen Programmen ging es immer mit dem printf-befehl.

handelt es sich um einen Syntax-fehler?
Code:
printf("Getraenke Automat | Bitte werfen sie 1 Euro ein: ");
01/29/2012 11:54 yihaaa#2
Ich bekomme kein Fehler. Ich würde aber nicht system("PAUSE"); verwenden. Benutz getchar( );

MfG
01/29/2012 11:57 S7ZY#3
erkläre mal bitte wieso und warum?
brauche ich nicht system("Pause") damit sich die command-box nicht sofort schließt bis jemand eine eingabe gemacht hat?
01/29/2012 12:01 yihaaa#4
Gibt da ein paar Artikel zu, wurde auch schon des öftern gepostet. Das hat mit der Performance deines Programms zu tun. Die System( )-Funktionen betreiben viel Aufwand, was man auch einfach haben kann, z.B. wird dort ein extra Thread gestartet. Wenn du mehr wissen willst google einfach danach. getchar( ); hat in deinem Falle den selben Efekt.

MfG

Edit: Du führst system("Pause"); in der else-Anweisung aus
Versuchs mal so:
Code:
#include<stdio.h>

//Mein Getränke Automat Ver.1.0
int main( )
{
int einwurf=0;
printf("Getraenke Automat | Bitte werfen sie 1 Euro ein:1 "); //HIER!
scanf("%d", &einwurf);

// überpruefe Geldstück
if(einwurf == 1) {
	printf("\nVielen Dank, bitte entnehmen sie ihr Getraenk.\n");
}else {
	printf("\nSie haben kein 1 Euro Stueck eingeworfen.\n");
}
getchar( );
return 0;
}
01/29/2012 12:11 S7ZY#5
jetzt bekomme ich aber die 2. printf-befehl nicht also es wird ausgeführt aber die "bedingung-wahr" wird nicht ausgeführt wenn die "logische bedingung" erfüllt ist allerdings wenn die "logische bedingung" falsch ist dann wird "bedingung-else ausgeführt.
01/29/2012 12:15 yihaaa#6
Du weißt das du auch eine 1 oder was auch immer eingeben musst, damit dein Programm weiterläuft?

MfG
01/29/2012 12:23 S7ZY#7
Ja, ich gebe die 1 ein (also wahr) dann wird die command-box einfach beendet.
Aber bei einer falschen eingabe z.b. 2,3,4,5,whatever kommt der dritte. printf-befehl (also falsch).
01/29/2012 12:30 .SkyneT.#8
Code:
#include "stdafx.h"
#include<stdio.h>
#include<conio.h> // für getch()

int main( )
{
int einwurf=0;
printf("Getraenke Automat | Bitte werfen sie 1 Euro ein:"); 
scanf("%d", &einwurf);

// überpruefe Geldstück
if(einwurf == 1) 
{
	printf("\nVielen Dank, bitte entnehmen sie ihr Getraenk.\n");
}
else 
{
	printf("\nSie haben kein 1 Euro Stueck eingeworfen.\n");
}
getch();
return 0;
}
.. War nicht großes, aber K&R mag ich nicht ;)

[Only registered and activated users can see links. Click Here To Register...] = böse
01/29/2012 12:38 S7ZY#9
liegt es villeicht daran weil ich mit einem sehr sehr sehr alten compiler arbeite?
Dev-C++
anscheinend verfügt es nicht die conio.h bibliothek

mit welchem arbeitet ihr?
01/29/2012 12:40 .SkyneT.#10
Quote:
Originally Posted by .DowN♫ View Post
liegt es villeicht daran weil ich mit einem sehr sehr sehr alten compiler arbeite?
Dev-C++
anscheinend verfügt es nicht die conio.h bibliothek

mit welchem arbeitet ihr?
[Only registered and activated users can see links. Click Here To Register...] & [Only registered and activated users can see links. Click Here To Register...]
01/29/2012 12:51 yihaaa#11
Mit Visual Studio C++ Express.

MfG
01/29/2012 18:37 MoepMeep#12
Die bei Dev-C++ mitgelieferte Version des mingw compilers ist schrott, den aktualisieren. Oder auf Visual Studio aktualisieren und glücklich sein :p
01/29/2012 18:58 S7ZY#13
ich hab mir jetzt Visual C++ geholt aber habe etwas bemerkt.
C++ aber ich lerne grade C. soweit ich weiß ist C++ wie c nur mit mehr schlüsselwörtern.

Also kann ich ruhig damit weiter arbeiten, oder was?

edit: funktioniert alles :D

nochmal zur sache mit den System()-funktionen.

Ich mache ja eigentlich nur das, was im lernbuch steht.

was muss ich über diese system()-funktionen wissen?
01/29/2012 20:23 Dr. Coxxy#14
System() -Funktionen sind böööse...
nimms einfach hin, ansonsten kannste dich einlesen @ google oder hier hat ja schon einer nen link gepostet:

[Only registered and activated users can see links. Click Here To Register...]

spricht nichts dagegen sie jetzt kurzfristig zum lernen zu benutzen, sollte sie aber ansonsten vermeiden.

EDIT:
Und c mit visual c++ express zu benutzen ist kein problem.
02/05/2012 13:32 käsekuchen11elf#15
Ein zum lernen gut geeignetes Setup unter Windows ist MinGW (gcc port für windows) + GNU make + Notepad++ zum coden.
Der Lerneffekt bei Visual Studio und konsorten ist einfach nicht vohanden, mal davon abgesehen dass der compiler absolute grütze ist ^^

my 2 cents