Benutzereingaben länger als ein Zeichen
-
char hat ja auch nur Platz für einen Buschstaben.
Du brauchst Arrays (Strings).
char name[30] = ""; printf("Nenne mir den Namen"); scanf("%s", name); printf("\nIhr Name lautet '%s'.\n", name);
Nimm dein Buch und lese dir das Kapitel gründlich durch.
Das sind ganz wichtige C-Grundlagen.
-
%c ist auch nur für ein char, nicht für einen String (also eine Zeichenkette, eine Reihe von char's). Probier mal so:
char name[256]; printf("Nenne mir den Namen"); scanf("%256s",name); printf("\nIhr Name lautet '%s'.\n", name);
In der Doku steht auch, welche Platzhalter außer %c und %s es noch so gibt (z.B. für verschiedene Zahlenformate).
-
Das wars, was ich suchte, vielen Dank!
Ja mein Tutorial lässt in diesem Fall wohl ein wenig zu wünschen übrig.
Werde mich hier auf dieser Seite mehr umschauen.Eine Frage noch:
Gibt es einen Befehl, mit dem ich eine spezifische Stelle einer Eingabe scannen kann. Aso zb:
Eingabe: aabcdc
"Scanne die dritte Stelle"?
-
theralph schrieb:
Das wars, was ich suchte, vielen Dank!
Ja mein Tutorial lässt in diesem Fall wohl ein wenig zu wünschen übrig.
Werde mich hier auf dieser Seite mehr umschauen.Eine Frage noch:
Gibt es einen Befehl, mit dem ich eine spezifische Stelle einer Eingabe scannen kann. Aso zb:
Eingabe: aabcdc
"Scanne die dritte Stelle"?
Du hast doch den String eingelesen und kannst nun selbstverständlich auch nur das dritte Zeichen weiter verwerten. Gib mal testweise name[2] aus (2 für das dritte Zeichen, weil nullbasiert).
printf("Drittes Zeichen des Namens: %c\n",name[2]);
Du solltest jetzt aber wirklich mal ein Buch/Tutorial nehmen und was zum Thema Strings bzw. char-Arrays in C lesen. Dann sind dir diese Dinge in Zukunft auch sofort klar.
-
Das kannst du ganz leicht mit Zeigern auf einen Index im Array erreichen:
char name[256]; char* ptr; printf("Nenne mir den Namen "); scanf("%255s",name); printf("\nIhr Name lautet '%s'.\n", name); if(strlen(name)>2) // sicherstellen, dass mindestens 3 Buchstaben eingegeben wurden { ptr = &name[2]; printf("Der 3. Buchstabe ist ein %c, der string ab der 3. Stelle lautet: %s", *ptr, ptr); }
-
theralph schrieb:
Das wars, was ich suchte, vielen Dank!
Ja mein Tutorial lässt in diesem Fall wohl ein wenig zu wünschen übrig.
Werde mich hier auf dieser Seite mehr umschauen.Eine Frage noch:
Gibt es einen Befehl, mit dem ich eine spezifische Stelle einer Eingabe scannen kann. Aso zb:
Eingabe: aabcdc
"Scanne die dritte Stelle"?
char buffer[1024]; puts( "Gib den Text ein! (Achtung: Wenn Du mehr als 1023 Zeichen eingibst, wird die Festplatte formatiert, Strafe muß sein)" ); scanf( "%s", buffer ); if( strlen( buffer ) >= 3 ) printf( "Die dritte stelle war %c\n", buffer[2] ); else puts( "Du Schlingel" );
-
Vielen Dank!
Das mit dem Buch lesen, werd ich jetz auch sofort tun^^
-
_Falke schrieb:
Das kannst du ganz leicht mit Zeigern auf einen Index im Array erreichen:
char name[256]; char* ptr; printf("Nenne mir den Namen "); scanf("%255s",name); printf("\nIhr Name lautet '%s'.\n", name); if(strlen(name)>2) // sicherstellen, dass mindestens 3 Buchstaben eingegeben wurden { ptr = &name[2]; printf("Der 3. Buchstabe ist ein %c, der string ab der 3. Stelle lautet: %s", *ptr, ptr); }
Welchen Vorteil siehst Du in der Benutzung des Zeigers?
-
mgaeckler schrieb:
_Falke schrieb:
Das kannst du ganz leicht mit Zeigern auf einen Index im Array erreichen:
char name[256]; char* ptr; printf("Nenne mir den Namen "); scanf("%255s",name); printf("\nIhr Name lautet '%s'.\n", name); if(strlen(name)>2) // sicherstellen, dass mindestens 3 Buchstaben eingegeben wurden { ptr = &name[2]; printf("Der 3. Buchstabe ist ein %c, der string ab der 3. Stelle lautet: %s", *ptr, ptr); }
Welchen Vorteil siehst Du in der Benutzung des Zeigers?
Er zeigt ja noch zusätzlich den String ab Zeichen 3 an (nicht nur Zeichen 3 selbst). Abgesehen davon ist der Zeiger für Zeichen 3 only natürlich unnötig und vor allem unnötig verwirrend für theralph.
-
"Scanne die dritte Stelle" habe ich so (wahrscheinlich falsch-) interpretiert, dass er sowohl das dritte Zeichen als auch die Zeichenkette ab dieser Position evtl. verwenden möchte.
Naja, seis drum.