Lowlevel

Lowlevel => Softwareentwicklung => Thema gestartet von: sebi2020 am 17. November 2009, 08:10

Titel: strlen
Beitrag von: sebi2020 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.
Titel: Re: attributbyte,problem
Beitrag von: kevin 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.
Titel: Re: attributbyte,problem
Beitrag von: sebi2020 am 17. November 2009, 10:02
Naja, ich will ja die Länge des Strings zurückgeben.
Titel: Re: attributbyte,problem
Beitrag von: kevin am 17. November 2009, 10:16
Dann gibst du halt nicht Zeichen aus, sondern zählst eine Variable hoch...
Titel: Re: attributbyte,problem
Beitrag von: sebi2020 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.
Titel: Re: attributbyte,problem
Beitrag von: kevin 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. ;)
Titel: Re: attributbyte,problem
Beitrag von: sebi2020 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?
Titel: Re: attributbyte,problem
Beitrag von: kevin 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);
Titel: Re: attributbyte,problem
Beitrag von: sebi2020 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.