variable = scanf setzen
-
Hallo,
ich bin grade dabei mir C so ein bisschen selbst beizubringen und bin auf folgendes Programmbeispiel für den Befehl scanf gestoßen:
#include <stdio.h>
int main(void) {
char a;
int b, check;printf("Bitte Eingabe machen (Zeichen/Zahl): ");
check = scanf("%c %d",&a, &b);
printf("check = %d \n",check);
printf ("Es wurde eingegeben: %c,%d",a,b);
return 0;
}Meine Frage: wieso funktioniert die Eingabe bzw. das Einlesen von a und b hier, wo doch scanf nur in der initialisierung von check vorkommt? Nach meinem Verständnis müsste ich eine zusätzliche Zeile der Form:
scanf("%c%d",a,b);
einfügen. Und wie kommt genau der Wert von check zustande? Was würde ich tun müssen um nicht nur ein Zeichen, sondern einen string (beliebige Größe) eingeben zu können? Freue mich über jede Antwort!
Grüße
-
Huhu,
scanf(...); gibt einen int zurück.
Dieser return-wert bedeutet:
On success, the function returns the number of items succesfully read. This count can match the expected number of readings or fewer, even zero, if a matching failure happens.
In the case of an input failure before any data could be successfully read, EOF is returned.Quelle: scanf - Reference
Wenn du ein String beliebiger Größe einlesen willst, müsstest du dich mit Dynamischer Speicherverwaltung beschäftigen.
Aber da du noch am Anfang bist, beschäftige dich lieber mit den kleineren Dingen:Einen String von konstanter Größe liest du so ein:
char x[2048]; scanf("%s",x); /* oder */ gets ( x ); /* Ausgeben: */ printf ("String: %s",x); /* s steht für string */
-
erstmal herzlichen Dank für die schnelle Antwort! Aber eine kleine Frage hab ich noch:
wie genau zählt scanf? wenn ich sage, erst zeichen, dann eine zahl eintippen, aber es umgekehrt eingebe (sprich erst zahl dann zeichen) krieg ich einen Wert von 1. Wieso krieg ich diesen Wert 1? Ich hätte null erwartet, da die eingabe fehlerhaft ist. Was mich noch verwirrt: wenn ich sofort eine Zahl (z.B. 5555) eingebe, kriege ich einen "check" von 2, wie bei der richtigen Eingabe (erst Zeichen, dann Zahl), aber als "eingegeben" kriege ich 5 und 555. Sieht char Zahlen auch als Zeichen an?
grüße
-
Eine Ziffer ist auch ein Zeichen. Für die Frage wie genau scanf funktioniert halte dich lieber an die oben genannte scanf - Reference. Das ist zuverlässiger als irgendwelche Dödel aus dem Forum.