C Programm bleibt beim Starten stehen
Hallo,
versuche C/C++ zu lernen und gehen grad ein Buch durch.
Arbeite mit dem Programm Visual C++ 2008 Express.
Nun zu meinem Problem über das ihr sicherlich schmunzeln werdet.
Habe ein kleines Beispielprogramm geschrieben doch irgendwas haut nicht hin, obwohl es genau dem Buch entspricht.
Hier ist der Quellcode:
Der kompiliert das alles ohne Fehler anzuzeigen, aber wenn ich das Programm starte kommt es über das „Bitte geben sie das Jahr ein:“ nicht hinaus. Es bleibt einfach stehen.
Ich hoffe, dass ihr mir helfen könnt es zu verstehen.
Mit freundlichen Grüßen
JimK
Quelle: C/C++ Das umfassende Lehrbuch
versuche C/C++ zu lernen und gehen grad ein Buch durch.
Arbeite mit dem Programm Visual C++ 2008 Express.
Nun zu meinem Problem über das ihr sicherlich schmunzeln werdet.
Habe ein kleines Beispielprogramm geschrieben doch irgendwas haut nicht hin, obwohl es genau dem Buch entspricht.
Hier ist der Quellcode:
#include <stdio.h>
#include <stdlib.h>
void main()
{
int jahr;
printf("Bitte geben sie das Jahr ein: ");
scanf("%d \n", &jahr);
if (jahr % 4 != 0)
{
printf("%d ist kein Schaltjahr! \n");
}
else
{
if (jahr % 100 != 0)
{
printf("%d ist ein Schaltjahr! \n");
}
else
{
if(jahr % 400 == 0)
{
printf("%d ist ein Schaltjahr!", jahr);
}
else
{
printf("%d ist kein Schaltjahr!", jahr);
}
}
}
}
Der kompiliert das alles ohne Fehler anzuzeigen, aber wenn ich das Programm starte kommt es über das „Bitte geben sie das Jahr ein:“ nicht hinaus. Es bleibt einfach stehen.
Ich hoffe, dass ihr mir helfen könnt es zu verstehen.
Mit freundlichen Grüßen
JimK
Quelle: C/C++ Das umfassende Lehrbuch
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 99601
Url: https://administrator.de/contentid/99601
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
9 Kommentare
Neuester Kommentar
Zu erst bitte einmal deinen Beitrag bearbeiten und deinen Quelltext in Code-Tags setzen, Danke !
Vielleicht liegt es an diesem Teil:...genauer gesagt an an der "printf()"-Funktion, da fehlt die Übergabe des Jahres als Parameter.
~Arano
__Edit:__
Diesen Fehler hast noch ein zweites mal gemacht ;)
Vielleicht liegt es an diesem Teil:
if (jahr % 4 != 0)
{
printf("%d ist kein Schaltjahr! \n");
}
~Arano
__Edit:__
Diesen Fehler hast noch ein zweites mal gemacht ;)
Sodale, habe es nun einfach selber mal probiert/Compiliert. Allerdings mit dem BCC32.
Das selbe Problem wie du es beschriebst kam zum Vorscheinen.
Als ich das dann allerdings im Notepad++ betrachtet habe (wegen dem Syntaxhighlight) und dabei war alles einzurücken, viel mir folgendes auf:
"int jahr;" <-- type = integer/ganzzahlen
"scanf("%d \n",&jahr);" <!-- type = character/zeichenkette
Und das ist auch der Fehler, hiermit funktionierte es dann
"scanf("%d",&jahr);"
Verstehe sowieso nicht warum du der eingegebenen Zahl noch eine Leerzeichen und einen Zeilenumbruch angefügt hast/wolltest !?
Und wegen den anderen Fragen, mal sehen... bin auch nicht besonders bewandert in dieser Sprache, eher weniger ;)
Gruß Arano
Das selbe Problem wie du es beschriebst kam zum Vorscheinen.
Als ich das dann allerdings im Notepad++ betrachtet habe (wegen dem Syntaxhighlight) und dabei war alles einzurücken, viel mir folgendes auf:
"int jahr;" <-- type = integer/ganzzahlen
"scanf("%d \n",&jahr);" <!-- type = character/zeichenkette
Und das ist auch der Fehler, hiermit funktionierte es dann
"scanf("%d",&jahr);"
Verstehe sowieso nicht warum du der eingegebenen Zahl noch eine Leerzeichen und einen Zeilenumbruch angefügt hast/wolltest !?
Und wegen den anderen Fragen, mal sehen... bin auch nicht besonders bewandert in dieser Sprache, eher weniger ;)
Gruß Arano
Ja klar, kein Problem !
Aber du hättest deine Beiträge trotzdem noch mal bearbeiten könne, dann ist das einfach lesbarer und vor allem kann man es dann einfacher kopieren !
Hm... hätte nicht gedacht, dass das auch so lösbar ist !
Meiner Meinung nach lag das Problem an der Stelle der Ausgabe:
"printf("neue Weichenstellung %d %d %d %d\n", &weiche1, &weiche2, &weiche3, &weiche4);"
Durch das Und-Zeichen übergibst du die Adresse des Speicherbereiches in dem der Wert der Variable gespeichert ist.
Nach entfernen der Und-Zeichen hat es bei mit sofort funktioniert weil anstelle der Speicheradresse nun der Wert ausgegeben wird.
~Arano
__Edit:__
So wie ich das gelesene habe, ist C++ die Weiterentwicklung von C. Und wenn man es lernen möchte solle man auch mit C anfangen und später um C++ ergänzen.
Und so wie ich das jetzt einschätze hast du hier aber ein C-Programm, weswegen du es auch als solches Compilieren solltest. Das ich mich hier irre ist nicht ausgeschlossen da ich selber ja auch noch Anfänger bin ;)
Aber du hättest deine Beiträge trotzdem noch mal bearbeiten könne, dann ist das einfach lesbarer und vor allem kann man es dann einfacher kopieren !
Hm... hätte nicht gedacht, dass das auch so lösbar ist !
Meiner Meinung nach lag das Problem an der Stelle der Ausgabe:
"printf("neue Weichenstellung %d %d %d %d\n", &weiche1, &weiche2, &weiche3, &weiche4);"
Durch das Und-Zeichen übergibst du die Adresse des Speicherbereiches in dem der Wert der Variable gespeichert ist.
Nach entfernen der Und-Zeichen hat es bei mit sofort funktioniert weil anstelle der Speicheradresse nun der Wert ausgegeben wird.
~Arano
__Edit:__
So wie ich das gelesene habe, ist C++ die Weiterentwicklung von C. Und wenn man es lernen möchte solle man auch mit C anfangen und später um C++ ergänzen.
Und so wie ich das jetzt einschätze hast du hier aber ein C-Programm, weswegen du es auch als solches Compilieren solltest. Das ich mich hier irre ist nicht ausgeschlossen da ich selber ja auch noch Anfänger bin ;)
Nabend
Zu C++ bin ich gekommen weil ich ein kleines Programm brauchte mit dem ich eine LED am Druckerkabel (LPT1) ein- und ausschalten kann (zur Emailbenachrichtigung (der Rest läuft über ein PHP-Script ^^)).
Nach etwas suchen habe ich dann diese Seite gefunden und einfach angefangen: http://ladedu.com
Muss aber ehrlich sagen das ich mir das leichter vorgestellt hatte da ich ja schon Erfahrung in PHP habe, vor allem die Variablentypen (int, char, ...) machens mir schwer, das geht in PHP fast automatisch.
Einen schönen Sonntag noch
Arano
Wie hast du eigentlich damit angefangen? Vielleicht kannst du mir ja ein paar Tipps geben!?
Naja, eigentlich arbeite ich mit PHP also der Webprogrammierun - von HTML, CSS und Javascript über Perl zu PHP.Zu C++ bin ich gekommen weil ich ein kleines Programm brauchte mit dem ich eine LED am Druckerkabel (LPT1) ein- und ausschalten kann (zur Emailbenachrichtigung (der Rest läuft über ein PHP-Script ^^)).
Nach etwas suchen habe ich dann diese Seite gefunden und einfach angefangen: http://ladedu.com
Muss aber ehrlich sagen das ich mir das leichter vorgestellt hatte da ich ja schon Erfahrung in PHP habe, vor allem die Variablentypen (int, char, ...) machens mir schwer, das geht in PHP fast automatisch.
Einen schönen Sonntag noch
Arano