string -> woerterzaehlen

opi2k

Grünschnabel
hi da ich noch neu in c bin und es bei mir hier nun shcon scheiter frag ich mal euch:

ich muss eine funktion schreiben die mir woerter in einem string zaehlt ohne dabei stringanalyse funktionen aus string.h zu verwenden. sprich einmal soll das wort gezaehlt werden wenns nur alleine steht und einmal wenns noch mit einem anderen verbunden ist zb rucksack und das wort dasd gesucht wird sack is oder so. kann mir einer erklaeren wie des in c geht?

thx im vorraus der opi
 
Zählst einfach wieviele Leerzeichen in dem String sind, und gut ist...


z.b. so

Code:
char * string;
int anz = 0;
for(int i = 0; string[i] == '\n'; i++)
   if( string[i] == ' ' )   //kann auch sein das du hier " " schreiben musst, kann das gerade nicht testen...
	   anz++;
 
cout<<"anzahl der wörter in dem string ist : "<<anz<<endl;

Aber so in etwa sollte das gehen, der testet einfach den string bis er ein Endezeichen bekommt, und checkt jedes Zeichen darin auf das Leerzeichen.

Gruss

MFC OpenGL
 
Hallo,

Der Ansatz mit dem Leerzeichen ist OK, aber er berücksichtigt nicht das manche Editoren beim Benutzen des Tabulators mehrere Leerzeichen einfügen statt einen Tab, oder das Wörter durch einen Tab getrennt sein können. Weiterhin ist unter c/c++ nicht garantiert das strings mit '\n' enden. Dieses Zeichen kann auch mitten im String auftreten. Das Stringende wird durch '\0' gekennzeichnet.

Als Ansatz hätte ich da:
Code:
unsigned long pos = 0   //beginne am Stringanfang
unsigned long count = 0 //Wortzähler
while(string[pos] != 0 )   //ist Stringende erreicht
{
   for(;string[pos] != Buchstabe und string[pos]!=0; pos++);
   if(string[pos] == Buchstabe) count++;       //Wenn Buchstabe dann Zähler erhöhen
   for(;string[pos] == Buchstabe;pos++);	//Wortende finden
}

Ich hoffe das hilft weiter.

Gruß Byteblaster
 
Zurück