paar fragen zu Konsolenanwendungen
-
ne, leider geht das auch nich...
kommt aber auch kein fehler.was meinste du mit:
net schrieb:
wenn das immer noch nicht geht, dann poste mal wie du "start" in 'data' rein kriegst
?
-
majin schrieb:
ne, leider geht das auch nich...
kommt aber auch kein fehler.am besten du debuggst das mal. setz' 'nen breakpoint auf der 'if'-zeile und dann schau dir 'data' an. step' dann weiter um zu sehen ob er in den anweisungsblock geht.
majin schrieb:
was meinste du mit:
net schrieb:
wenn das immer noch nicht geht, dann poste mal wie du "start" in 'data' rein kriegst
?
na irgendwie musst du's ja da reinkriegen. mit scanf() oder strcpy() oder sowas
-
oh man...
sorry bin halt noch anfänger...
was bringt das denn dieses scanf();???
-
@net + majin
AJ schrieb:
Ich weiß jetzt übrigens, dass du mit 1., 3. und 4. kein Problem hast ;).
D. h. Punkt 2 meiner früheren Fragen ist das Problem: Das Einlesen!
@majin
Du hast keine Funktion zum Einlesen von der Tastatur aufgerufen, folglich kann der Benutzer auch nichts eingeben und dann steht natürlich auch nicht das erwartete in data!Am einfachsten und sichersten liest du etwas von der Tastatur mit fgets() ein.
Anwendungsbeispiel:
#include <stdio.h> int main(void) { char text[256]; fgets(text, 256, stdin); printf("Das hast du gerade eingegeben: %s", text); return(0); }
Zur Erklärung:
text = Ein Array bzw. Vector in dem du eine Zeichenkette (wird meistens auch string genannt) speicherst. Du kannst maximal 255 Zeichen dort speichern + das sog. Stringendezeichen ('\0' bzw. 0). Wie der Name schon sagt, bezeichnet dieses Zeichen das Ende des Strings und ist wichtig für Funktionen wie z. B. printf().
stdin = Standard Input (im Normalfall die Tastatur)Der Rest dürfte klar sein. Wenn nicht, einfach nachfragen :).
-
sry hab ich nur nich gepostet, das hatte ich natürlich schon...
for (int x = 0;x<6000;x++) { char string[80]; gets(string); }
-
1. Warum die Schleife??
2. Verwende besser fgets() anstatt gets(). Grund: Bei gets() riskierst du Bufferoverflows, die zu seltsamen Effekten führen können und das wollen wir doch vermeiden, oder?!?
-
ok ... ich probier es ma...
die schleife is dafür damit ich undendlich viel eingeben kann, wenn sie nich da wäre dann könnte ich nur eine zeile schreiben und enter drücken, dann würde es sich wieder sclhiessen
-
ich glaube, das problem liegt daran, dass die schleife noch 5999 Zeilen erwartet.
Das Problem kann behoben werden, indem du das if([...]) in die Schleifa packst, also etwa:
for(int x = 0;x<6000;x++) { char string[80]; gets(string); if(strncmp(string,"start",5)) { //Aufruf der Funktion LaunchWorld() LaunchWorld(); } }
Vielleicht löst das dein Problem.
ACHTUNG: das if([...]) muss natürlich deine EINGABE kontrollieren, also string und nicht mehr data
-
ne sorry, das funzt auch nicht
hatte ich auch schonmal probiert...
vielleicht liegt das ja an "strncmp" oder so?!?!
-
hab gerade bemerkt das wenn ich einfach nur enter drücke, das sich dann LanchWorld auslöst