?
Hallo,
na gut, aber nur, weil ich noch nicht müde bin...:
#include <stdio.h>
/* Prototyp fuer instr */
void instr (char *, char, char **);
int main(int argc, char *argv[])
{
int dummy;
char txt[]="The quick brown fox jumped over the lazy dog";
char *s0, *s1;
s1=txt;
while (1)
{
/*
s0 wird auf s1 gesetzt, da s1 in instr
immer geaendert wird, zeigt s0 jeweils
auf den naechsten Teil, der nach einem
Leerzeichen folgt
*/
s0=s1;
puts(s0);
/*
instr aufrufen:
s0 (= ein char*, Zeiger auf einen String),
&s1 (= ein char**, Zeiger auf einen char*)
werden uebergeben
*/
instr(s0,' ',&s1);
/*
s1 wurde in instr geaendert
Abfrage, ob s1 jetzt auf das
Null-Byte, den String-Abschluß, zeigt,
wenn ja, dann raus aus der Schleife
*/
if (s1==NULL) break;
/*
nach dem Aufruf von instr zeigt s1 auf
die Stelle, an der das Leerzeichen
gefunden wurde, deswegen muß jetzt der
Zeiger um eins erhoeht werden, um
auf das Zeichen nach dem Leerzeichen
zu positionieren
*/
s1++;
}
/*
eine Moeglichkeit, um das Programm nach der
Ausgabe der Strings anzuhalten, damit "man
etwas sieht"
*/
scanf("%d", &dummy);
}
/*
sucht nach dem ersten Vorkommen des Zeichens c
im String s, aendert dabei den Zeiger *r (ein char*)
so um, daß *r auf das gefundene Zeichen c zeigt
*/
void instr (char *s, char c, char **r)
{
char *p;
*r=NULL;
/*
solange kein Nullbyte gefunden wird...
*/
for (p=s;*p;p++)
if(*p==c)
{
/*
diese Zuweisung bewirkt, daß in main
die Variable s1 auf das gefundene Zeichen
zeigt, denn p zeigt jetzt auch auf das
Zeichen c
*/
*r=p;
break;
}
}
das war jetzt doch mein Schlafmittel, also gute Nacht, oder besser, guten Morgen,
MfG