Thread Position eines Zeichens bestimmen (7 answers)
Opened by renee at 2004-05-05 10:54

ronald
 2004-05-05 15:07
#10951 #10951
User since
2003-08-15
76 Artikel
BenutzerIn
[default_avatar]
[quote=renee,05.05.2004, 08:54]Wie muss eine Methode aussehen, die ein Zeichen in einem String findet und die Position zurückgibt (oder einen Zeiger darauf). Dabei sollen keine Bibliotheksfunktionen benutzt werden...

Ich habe bisher folgendes:
Code: (dl )
1
2
3
4
5
6
7
char* findchar(char *string, char zeichen){
char *position = string;
while(*position != zeichen){
*position++;
}
return position;
}


Aber das liefert mir den gesamten Teil ab dem Zeichen und nicht die Position :-(

Der Aufruf soll dann so aussehen:
Code: (dl )
findchar("HALLO:53456",':');
[/quote]
In deiner Frage suchst du nach 2 Dingen:
1. die Position auf das erste Zeichen
2. einen Zeiger auf diese Position

Deine Funktion liefert dir einen Zeiger auf diese Position (was du ja überprüft hast).

Falls du die Position willst (also den Index), dann kannst du z.B.
Code: (dl )
printf("Position: %d\n", findchar(string, ':') - string); // plus/minus Eins

verwenden. (Ich befürchte, die C-Programmierer sind begeistert).

Noch eine Frage:

Was passiert, wenn das Zeichen nicht vorkommt? Deine Funktion sucht dann den kompletten Arbeitsspeicher ab!

Also:
Besser wäre z.b. folgendes:
Code: (dl )
1
2
3
4
5
while (*position) { // suche bis zum NULL-Byte
if (*position == zeichen) return(position); // gefunden->fertig
position++;
}
return(NULL); // nicht gefunden -> NULL

untested\n\n

<!--EDIT|ronald|1083836396-->

View full thread Position eines Zeichens bestimmen