C - probleme

Hallo Leute...

Ich fange grad an C zu lernen, und es gibt auch gleich erste Probleme...

Ich habe mir im Internet ein paar tuts und kurse gesaugt, aber die Quelltexte die da drin stehen funktionieren nur halb! Weiter als "Hello World" bin ich noch nicht gekommen....Ich habe z.B. diesen Code hier:

Code:
/* 

Einlesen zweier Zahlen und mit denen
eine Division ausführen. Divisionsrest
wird auch angezeigt.

/*
#include<stdio.h>

int main()
{

intzahl_a;
intzahl_b;
intdiv_rest;
intdiv_ergebnis;

printf ("\nBitte Zahl a eingeben : ");
scanf ("%d",&zahl_a);
printf ("\nBitte Zahl b eingeben : ");
scanf ("%d",&zahl_b);

div_ergebnis = zahl_a / zahl_b;
div_rest = zahl_a % zahl_b;

printf ("\n%d / %d = ",zahl_a, zahl_b);
printf ("%d Rest %d\n",div_ergebnis, div_rest);

}

Das Problem ist, wenn ich ihn Compiliert habe kann ich die Erste zahl eingeben und die Zweite, dann schliesst sich das fenster aber sofort! Was stimmt da nicht???

Der Compiler den ich benutze ist der Dev-C++ 4 unter Windoofs....
 
Code:
#include<stdio.h>

int main()
{

int zahl_a;
int zahl_b;
int div_rest;
int div_ergebnis;

printf ("\nBitte Zahl a eingeben : ");
scanf ("%d",&zahl_a);
printf ("\nBitte Zahl b eingeben : ");
scanf ("%d",&zahl_b);

div_ergebnis = zahl_a / zahl_b;
div_rest = zahl_a % zahl_b;

printf ("\n%d / %d = ",zahl_a, zahl_b);
printf ("%d Rest %d\n",div_ergebnis, div_rest);

return 0;

}

So funktionierts bei mir.
 
Abgesehen davon, dass der Kommentar am Anfang falsch bzw. garnicht beendet wurde, und dass hinter "int" ein Leerzeichen fehlt, müsste es laufen, sofern man nicht für die zweite Zahl 0 angibt.

EDIT:
@Rapt0rZ24? : Viele Compiler unterstützen das implizite return, es muss also kein return in main vorhanden sein (auch wenn es besser wäre...)
 
1. Fehler ist der Kommentar
Auf mit /*
Zm mit */
Dein ganzes Programm ist also ein Kommentar, da du ihn nirgens zu machst

2. Fehler ist die Variablendeklaration, welche ja im oberen Beispiel schon verbessert wurde. Nach dem int muss ein leerzeichen sein.

Das Programm funktioniert. Nur sobald das Programm fertig ist, schließt sich das Fenster. Wenn du noch die Datei <conio.h> einfügst, und ans Ende ein getch(); schreibst kannst du es anschauen.

getch() ist eine Funktion die eine Taste von der Tastaur einliest. Also musst du dann irgendeine Taste drücken, um das Programm zu beenden.
conio.h und damit getch() ist aber systemabhängig. Das funzt nur bei Windows. Wenn du das Programm unter Linux ausführst geht es nicht.

Fertiges Programm:
/*

Einlesen zweier Zahlen und mit denen
eine Division ausführen. Divisionsrest
wird auch angezeigt.
*/

#include<stdio.h>
#include<conio.h>

int main()
{

int zahl_a;
int zahl_b;
int div_rest;
int div_ergebnis;

printf ("\nBitte Zahl a eingeben : ");
scanf ("%d",&zahl_a);
printf ("\nBitte Zahl b eingeben : ");
scanf ("%d",&zahl_b);

div_ergebnis = zahl_a / zahl_b;
div_rest = zahl_a % zahl_b;

printf ("\n%d / %d = ",zahl_a, zahl_b);
printf ("%d Rest %d\n",div_ergebnis, div_rest);

getch();

}
 
also, wenn ich dir einen tip geben darf: lass c beiseite und fang gleich mit c++ an. wenn ich schon dieses scanf bzw. printf lese, fangen meine augen an zu bluten. wenn du wirklich c/c++ erlernen willst, würde ich dir auch empfehlen ein gutes anfängerbuch zu kaufen (da ist man mit 10? schon gut dabei). da lernst du auch gleich einen richtigen programmiestil und nicht so einen murks wie ich da oben sehe.

mfg,
pacman
 
Original von 5pike
conio.h und damit getch() ist aber systemabhängig. Das funzt nur bei Windows. Wenn du das Programm unter Linux ausführst geht es nicht.
Das würd ich so nicht sagen... nur der Header und die Bibliothek sind unterschiedlich (curses.h,ncurses)
Und unter Linux läuft (ohne Emulator) kein Windows-Programm!
 
Man kann auch einfach getchar() nehmen, das ist in der stdio.h definiert.
Oder man führt das Programm einfach aus der DOS Eingabeaufforderung / cmd heraus aus.

Und was an printf() und scanf() so schlimm sein soll weiß ich auch nicht, aber das ist wohl jedem seine Sache ob er lieber C oder C++ schreibt.
 
Und wenn ich höre, das man mit C++ einen guten Programmierstil erlernen könnte (Ob nun mit oder ohne Buch), dann bluten mir die Ohren.

Moe
 
@Mr. Moe

lol? was soll den das jetzt heißen?
ich hab doch nur gesagt, dass es für einen anfänger bestimmt nicht gut ist, sich durch schlecht geschriebene, lückenhafte und auch oft einfach falsche tuts zu wühlen. natürlich hat der stil nix mit der sprache zu tun, man kann überall schlecht/gut coden. ich glaube du hast mich da missverstanden.
und wieso soll man den mit c/c++ keinen guten stil erlernen können? das kapier ich nicht.

EDIT:
@suicide:
"Und was an printf() und scanf() so schlimm sein soll weiß ich auch nicht, aber das ist wohl jedem seine Sache ob er lieber C oder C++ schreibt."

das war ja jetzt auch nicht so ganz ernst gemeint. wenn jemand überzeugter c-coder ist, ist mir das auch recht. ich ziehe c++ vor, weil es ganz einfach besser ist :D.

mfg,
pacman
 
Mist...

An Rapt0rZ24? und 5pike:

Danke für eure Erklärungen, aber eure Codes funktionieren leider auch nicht...Das Fenster schliesst sich trotzdem!!! Ich weiss echt nicht mehr weiter....
 
Falls Du das PRogramm durch klicken im Explorer startest, versuche mal es von der Eingabeaufforderung zu starten ;)

mfg
 
Also ich würde dir den Boarland Compiler empfehlen. Die 5er Version gibts glaub sogar kostenlos. 6 ist aktuell. Ich selber benutze aber trotzdem die 5er.

Vorteile sind:
1. Man sieht schneller wo Fehler sind, weil bestimmte Sachen farblich hervorgehoben werden.
2. Es gibt Hilfestellungen zu den Fehlern.
 
es fehlt der rückgabewert für die main-funktion. entweder du fügst am ende ein
Code:
return 0;
ein, oder du startest die main-funktion als rückgabelose funktion
Code:
void main ()
{
.
 
Original von Staatssicherheit
oder du startest die main-funktion als rückgabelose funktion
Code:
void main ()
{
.

in c/c++ gibt es keine "rückgabelose funktion", auch nicht bei der main!

also laut standard muss es so heißen:
Code:
int main ()
{...
return 0;
}

aber in void main ist auch in ordnung. aber um fehler auszuschließen würde ich mich in diesem fall an den standard halten.

ich würde btw inzwischen auch auf den compiler als fehlerquelle tippen, probier mal einen anderen.
 
(Liest eigentlich keiner meine Posts?)
Naja, egal, auf jeden Fall ist es unter Windows etwas eigenwillig. Ein Enter sendet nämlich manchmal mehr als nur ein Zeichen... versuch mal zwei getch Aufrufe... Aber aus der Eingabeaufforderung muss es gehen (oder du machst was grundsätzlich falsch)
 
Zurück
Oben