Länge einer Zeichenkette

Moderator: Moderatoren

Antworten
Benutzeravatar
beafraid88
Beiträge: 99
Registriert: Sa 25. Okt 2008, 17:34
Wohnort: Aachen/Düsseldorf/Mönchengladbach

Länge einer Zeichenkette

Beitrag von beafraid88 » Mi 19. Jan 2011, 01:42

Hey,

würde gern wissen,warum man hier in der while-Bedingung nicht (*str[i++]!='\0') nimmt....schließlich muss doch der Inhalt des letzten Arrayelements von str geprüft werden :S

#include <stdio.h>
char *str="Hello World!\n";
int main () {
int i=0,laenge=0;
do {
laenge++;
} while (str[i++]!='\0');
printf("Länge der Zeichenkette beträgt %d Zeichen",laenge);
getchar();
return 0;
}

Darkmaster
Beiträge: 501
Registriert: Do 19. Jun 2008, 12:12

Re: Länge einer Zeichenkette

Beitrag von Darkmaster » Mi 19. Jan 2011, 03:23

\0 wird automatisch ans ende des strings gehangen; ist daher also stets das letzte zeichen eines strings und wird somit genauso behandelt wie die anderen zeichen des strings auch.

testuser
Beiträge: 180
Registriert: Mi 25. Jun 2008, 18:47

Re: Länge einer Zeichenkette

Beitrag von testuser » Mi 19. Jan 2011, 11:10

beafraid88 hat geschrieben: würde gern wissen,warum man hier in der while-Bedingung nicht (*str[i++]!='\0') nimmt
mit dem array offset hast du den zeiger schon referenziert:

str[i++] = *(str++);
Мои пять копеек

Benutzeravatar
beafraid88
Beiträge: 99
Registriert: Sa 25. Okt 2008, 17:34
Wohnort: Aachen/Düsseldorf/Mönchengladbach

Re: Länge einer Zeichenkette

Beitrag von beafraid88 » Mi 19. Jan 2011, 18:29

hmm so ganz verstanden habe ichs noch nicht :S
hier ein bsp:
char str1 ={Hallo}; /* somit *str1[0]='H', *str1[1]='a'...*str[5]='\0' */

wenn ich jetzt den zähler i laufen lasse bis der inhalt '\0' erscheint und solange die anzahl der durchlaufenen buchstaben zähle,muss es doch heißen(jetzt mit einer for-schleife):

int counter=0,i;
for ( i=0; *str!='\0';i++) {
counter++=;
}
oder
int counter=0,i;
for ( i=0; *(str1++)='\0';i++) { /* da str1= &str1[0] (Zeiger auf das erste Element vom Array str1) */
counter++=;
}


und nicht
int counter=0,i;
for ( i=0; str!='\0';i++) {
counter++=;
}


kilian

testuser
Beiträge: 180
Registriert: Mi 25. Jun 2008, 18:47

Re: Länge einer Zeichenkette

Beitrag von testuser » Mi 19. Jan 2011, 18:47

beafraid88 hat geschrieben: char str1 ={Hallo};
kilian
Also, zum initialisieren brauchst du entweder: char *str1 = "Hallo";
oder: char str1[20] = "Hallo";
In beiden Fällen wird ein char Zeiger str1 erzeugt, der auf die Speicherstelle des ersten Zeichen zeigt, also auf 'H'. Damit ist *str1 = 'H' bzw. str1[0] = 'H'
Also ist str1[5] = '\0', bzw *(str1+5) = '\0'
Мои пять копеек

Benutzeravatar
beafraid88
Beiträge: 99
Registriert: Sa 25. Okt 2008, 17:34
Wohnort: Aachen/Düsseldorf/Mönchengladbach

Re: Länge einer Zeichenkette

Beitrag von beafraid88 » Mi 19. Jan 2011, 19:47

ahh ok, jetzt habe ichs verstanden.


vielen dank )

Antworten

Zurück zu „Info I“