Autor Thema: strlen  (Gelesen 8520 mal)

sebi2020

  • Beiträge: 130
    • Profil anzeigen
    • Infortus OS
Gespeichert
« am: 17. November 2009, 08:10 »
ah okay ,danke. hm, hab mein erstes problem hinbekommen. beim zweiten komm ich nicht weiter. ich weiß leider nicht wie ich herausbekomme viele elemente text[] hat.
Ich wollte da iwi mit while oder so iterieren, und bei jedem durchgang,das element zähln.
Please press any-key...
Verflucht wo ist any-key? hier? ach Mist, das war Escape...

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 17. November 2009, 09:31 »
Ein C-String hört mit einem Nullbyte auf. Du gibst also so lange Zeichen aus, bis du an eine 0 kommst.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

sebi2020

  • Beiträge: 130
    • Profil anzeigen
    • Infortus OS
Gespeichert
« Antwort #2 am: 17. November 2009, 10:02 »
Naja, ich will ja die Länge des Strings zurückgeben.
Please press any-key...
Verflucht wo ist any-key? hier? ach Mist, das war Escape...

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 17. November 2009, 10:16 »
Dann gibst du halt nicht Zeichen aus, sondern zählst eine Variable hoch...
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

sebi2020

  • Beiträge: 130
    • Profil anzeigen
    • Infortus OS
Gespeichert
« Antwort #4 am: 18. November 2009, 18:28 »
hab das jetzt so gelöst, denke dass sollte so in ordnung sein, oder?
int strlng(char* string)
{
int count = 0;
while(*string)
{
string++
count++
}
string = string - count
return count;
}
Also als erklärung zu dem string = string - count, (kann sein dass es überflüssig ist, aber ich will damit bezwecken dass string wieder auf die ursprungsadresse zeigt. Ich meine string ist doch nur ein pointer auf einen weiteren pointer. und ich bin mir jetzt nicht so sicher, ob der übergebene pointer auch verändert wird, oder ob nur die adresse des pointers string verändert wird.
Please press any-key...
Verflucht wo ist any-key? hier? ach Mist, das war Escape...

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 18. November 2009, 19:36 »
Sollte so funktionieren. Auch wenn der Code mit Einrückungen schöner zu lesen wäre.

Was das string = string - count betrifft, solltest du vielleicht doch lieber erstmal C lernen. Es ist alles Call by Value, d.h. der Pointer string ist eine Kopie von der des Aufrufers und wird nach dem Ende der Funktion sowieso ungültig. Kein Bedarf, das wieder zurückzusetzen. Und wenn man es bräuchte, würde man üblicherweise string -= count; schreiben. Das sieht sonst so nach Basic aus. ;)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

sebi2020

  • Beiträge: 130
    • Profil anzeigen
    • Infortus OS
Gespeichert
« Antwort #6 am: 18. November 2009, 19:49 »
achso, naja, dass mit dem string -= count, wusste ich schon, nur ich finde es steigert meiner meinung nach die lesbarkeit wenn man string = string - count schreibt , naja ;-)

aber was macht man, wenn ich eine pointer mithilfer einer funktion manipulieren will? also, als beispiel:

char* pointer1 = (char*) 0x10000;
void change(char* pointer2)
{
pointer2 = 0x20000;
}
change(pointer1);
also wenn man bezwecken will, dass der pointer der übergeben wird, verändert wird. also in dem fall pointer1?
Please press any-key...
Verflucht wo ist any-key? hier? ach Mist, das war Escape...

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 18. November 2009, 19:51 »
Dann übergibst du einen Pointer auf pointer1.

char* pointer1 = (char*) 0x10000;

void change(char** pointer2)
{
    *pointer2 = (char*) 0x20000;
}

change(&pointer1);
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

sebi2020

  • Beiträge: 130
    • Profil anzeigen
    • Infortus OS
Gespeichert
« Antwort #8 am: 18. November 2009, 19:54 »
okay liegt jetzt wahrscheinlich, dran dass ich nicht son c - spezialist bin, aber mich verwirrt schon, dass du jetzt "char**" schreibst. (char pointer pointer ? :-P). naja, ich werd mir mal nen artikel über pointer im inet raussuchen.
Please press any-key...
Verflucht wo ist any-key? hier? ach Mist, das war Escape...

 

Einloggen