Eingabe in Konsole wird nicht ausgeführt.
-
Langi schrieb:
wo hast du gelsen, dass man scanf so benutzt?
so sollte das eher funktionieren:
char eingabe; ... scanf("%c",&eingabe); if(eingabe=='a') {...} else if (eingabe=='b') {...}
das ist zumindest eine möglichkeit.
aber bitte beschäftige dich nochmal gründlich mit dieser thematik, deine beispiele sind wirklich einigermaßen verkehrt.greetz
Ahhhhh ok, verstehe. Also mit einem Zeichen funktioniert das schonmal. Jetzt wollte ich das eigentlich auf einen String anwenden ... aber scheinbar mache ich wieder was falsch
char input[5]; scanf("%s",&input); if(input=="test") printf("test\n"); else if ...
-
So, mal eben registriert ^^ hmm da hast du im prinzip recht, recht elegant finde ich das allerdings nicht und könnte bei anfängern schnell zur verwirrung und folglich zu fehlern führen.
-
Langi schrieb:
So, mal eben registriert ^^ hmm da hast du im prinzip recht, recht elegant finde ich das allerdings nicht und könnte bei anfängern schnell zur verwirrung und folglich zu fehlern führen.
Willkommen in der Community ^^
-
danke. ach ich bin per handy online, etwas schwierig dass da alles funktioniert.
string einlesen:
scanf("%s",&eingabe); //oder &eingabe[] ? arbeite so wenig mit c strings
vergleichen musst du 2 strings dann mit strcmp().
übrigens, es heißt int main() und nicht void main() und es muss ein wert zurückgegeben werden. normalerweise return 0; nach einem fehlerfreiem ablauf.
-
Ah ich habs jetzt
char input[5]; scanf("%s",&input); if(!strcmp(input, "test")) printf("test\n"); else if ...
Habt vielen DANK für die Unterstützung!
Gru-huuus
-
gerne...
sollte der benutzer jetzt zu viele zeichen eingeben, würde das einen fehler verursachen. schau dir da eventuell new und delete an. oder die c++ variante std::string
-
Langi schrieb:
int z='a';
das ist nicht dein ernst oder? du weist einem integer ein character zu...
greetz
Erstens habe ich das nie geschrieben, zweitens ist das völlig korrekt.
-
Saul schrieb:
Ah ich habs jetzt
char input[5]; scanf("%s",&input); if(!strcmp(input, "test")) printf("test\n"); else if ...
Habt vielen DANK für die Unterstützung!
Gru-huuusDer Code ist Mist:
#include <stdio.h> int main(void) { char input[5]; sscanf("abcdefghijklmno", "%s", input); /* das & braucht man hier nicht */ puts(input); return 0; }
Gibt hier aus:
abcdefghijklmno Segmentation fault
"%4s" wäre ein guter Anfang. Bedank dich lieber erst, wenn das Ding keine Segfaults mehr macht.
-
nwp2 schrieb:
Langi schrieb:
int z='a';
das ist nicht dein ernst oder? du weist einem integer ein character zu...
greetz
Erstens habe ich das nie geschrieben, zweitens ist das völlig korrekt.
Du hast es nicht so geschrieben, kommt aber aufs selbe raus. Klar ist es korrekt, didaktisch aber wertlos für einen Anfänger, das weiß ich aus Erfahrung. Ist jetzt aber auch egal, darum gehts hier nicht.
-
Langi schrieb:
gerne...
sollte der benutzer jetzt zu viele zeichen eingeben, würde das einen fehler verursachen. schau dir da eventuell new und delete an. oder die c++ variante std::stringFalsch, denn wir sind hier im ANSI C und somit existiert kein new oder delete sondern nur malloc(), calloc() und free().
Nur leider wird viel zu oft ANSI C mit C++ vermischt
Noch schlimmer wenn man dann anfängt C Memory Funktionen mit C++ Memoryfunktionen zu mischen, da krachts dann gewaltig... Also immer vorsichtich bei sowas seinAuch std::string, was auf einen Namespace hinweist und der string Klasse/Datentyp aus der C++ STL Libary, gehört nicht zu C... da gibts nun mal nur einen dynamisch mit malloc oder calloc angelegten char* Pointer oder eben einen auf eine bestimmte Eingabegröße vordefinierten Buffer wie z.B. char buff[255]; o.ä. je nachdem wie mans halt macht.
Fazit: Nicht die Vorzüge von C++ nehmen und dann am ende doch C code schreiben, denn wenn er schon anfängt C++ Funktionen zu benutzen, sollte man gleichzeitig darauf hinweisen das er es einfacher hat gleich mit cin und cout zu arbeiten und dann entsprechend die getline Funktion zu nehmen etc. pp. Also das könnte man jetzt noch weiterführen ich wills mir aber hier mit niemanden verscherzen, ich wollte nur darauf hinweisen
MFG
Blackskyliner