Forum: PC-Programmierung Menge der Zeichen in einem char Array in C?


von LuisBaatz (Gast)


Lesenswert?

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?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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)?

von Mathias B. (mbr)


Lesenswert?

Hi, also sowas

char zeichenkette[500];
int anzahl;

strcpy(zeichenkette,"Hallo");

//Dann gibt

anzahl=strlen(zeichenkette);


Die Anzahl der Zeichen in anzahl.

von vom Ergebnis abziehen (Gast)


Lesenswert?

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).

von LuisBaatz (Gast)


Lesenswert?

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?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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();

von LuisBaatz (Gast)


Lesenswert?

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?

von LuisBaatz (Gast)


Lesenswert?

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.

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

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:-)

von Sebastian S. (amateur)


Lesenswert?

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.

von Mark B. (markbrandis)


Lesenswert?

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
Noch kein Account? Hier anmelden.