Hallo, Ich habe folgendes Problem: Zunächst wird eine Funktion erstellt. In dieser Funktion soll beim Funktionsaufruf ein Text eingegeben werden(z.b.Hallo). Dieser Text soll in einem char Array mit max. 500 Zeichen gespeichert werden. Dann soll dieses char Array in einer printf Funktion ausgegeben werden. Soweit bin ich bis jetzt gekommen. Nun will ich Die Nummer des letzten Index meines char Array in dem ein Zeichen gespeichert wurde plus eins (Bei "Hallo" 5+1) in einer int variable speichern um so die Menge der Zeichen zu bekommen die sich in meiner printf Funktion befinden. Geht das?
LuisBaatz schrieb: > um so die Menge der Zeichen zu bekommen die sich in meiner printf > Funktion befinden Du brauchst nicht zufällig einfach nur den Rückgabewert von printf() (den die meisten Aufrufer ignorieren)?
Hi, also sowas char zeichenkette[500]; int anzahl; strcpy(zeichenkette,"Hallo"); //Dann gibt anzahl=strlen(zeichenkette); Die Anzahl der Zeichen in anzahl.
LuisBaatz schrieb: > In dieser Funktion soll beim > Funktionsaufruf ein Text eingegeben werden(z.b.Hallo). Die Frage ist auch wie du diesen Text einliest. fgets liest auch '\n' am Ende ein und dieses Zeichen wird dann von printf mitausgegeben (und mitgezählt).
Jörg W. schrieb: > LuisBaatz schrieb: >> um so die Menge der Zeichen zu bekommen die sich in meiner printf >> Funktion befinden > > Du brauchst nicht zufällig einfach nur den Rückgabewert von printf() > (den die meisten Aufrufer ignorieren)? Ich wusste nicht, dass die Funktion einen Rückgabewert hat. Entspricht dieser der Menge an Zeichen die sich in der Funktion befinden? Und wenn ja, wie speichere ich diesen Wert in einer Variable?
LuisBaatz schrieb: > Ich wusste nicht, dass die Funktion einen Rückgabewert hat. Dokumentation lesen bildet. ;-) (Früher sagte man da einfach "RTFM".) > Entspricht dieser der Menge an Zeichen die sich in der Funktion > befinden? Es "befinden sich" keine Zeichen "drin". printf() gibt Zeichen nach stdout aus. Am Ende gibt es die Anzahl der erfolgreich ausgegebenen Zeichen zurück. > Und wenn ja, wie speichere ich diesen Wert in einer Variable? Wie bei jeder anderen Funktion:
1 | foo = bar(); |
Mathias B. schrieb: > Hi, also sowas > > char zeichenkette[500]; > int anzahl; > > strcpy(zeichenkette,"Hallo"); > > //Dann gibt > > anzahl=strlen(zeichenkette); > > Die Anzahl der Zeichen in anzahl. Ich bin leider noch Anfänger und würde ungern weitere Funktionen verwenden um den Code nachvollziehen zu können. Gibt es eine Möglichkeit das Problem ohne weiter Funktionen zu beheben?
Jörg W. schrieb: >> Entspricht dieser der Menge an Zeichen die sich in der Funktion >> befinden? > > Es "befinden sich" keine Zeichen "drin". > > printf() gibt Zeichen nach stdout aus. Am Ende gibt es die Anzahl der > erfolgreich ausgegebenen Zeichen zurück. Okay vielen dank :) Ich denke ich muss tiefer in die Materie eintauchen und erst richtig Verstehen wie die printf Funktion funktioniert. Ich bin noch Anfänger(Habe vor drei Wochen angefangen c zu lernen) und habe keine Ahnung was stdout ist.
LuisBaatz schrieb: > Gibt es eine Möglichkeit > das Problem ohne weiter Funktionen zu beheben? Ja, du nachst einfach eine Schleife die solange läuft bis sie die abschließende Null findet. Das ganze packt man dann am besten in eine Funktion damit man es an beliebigen Stellen wiederverwenden kann:-)
Das alles geht aber nur, wenn Du brav bist und am Ende jeder Zeichenkette das Ende-Zeichen '\0' anhängst. Oder die hierfür vorgesehenen String-Funktionen verwendest. Vorsicht, wenn Du Deine Funktionen auf ein leeres Array loslässt - nicht immer steht da 0x0 drinnen.
Sebastian S. schrieb: > Das alles geht aber nur, wenn Du brav bist und am Ende jeder > Zeichenkette das Ende-Zeichen '\0' anhängst. Die Funktionen der C-Standardbibliothek machen das von alleine (z.B. sprintf()). Freilich muss man als Programmierer den Platz im Array dafür lassen, also dieses nicht zu klein dimensionieren.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.