21. juli 2003 - 14:11Der er
1 kommentar og 2 løsninger
Funktion til at søge efter et ord i en streng
Hej, jeg prøver på at lave en funktion der kan gennemsøre en tekstreng efter et ord men har lidt problemer. Mit bedste bud ser sådanher ud men fungerer langt fra.
bool find_word(char ord[], char streng[]) { int count=0;
for(count; streng[count]!=NULL; count++) {
if(((streng[count]==' ')&&(streng[++count]==ord[0]))||(streng[count]==ord[0])) // er en linie
for(count; streng[count]!= 0 /*NULL er en pointer*/; count++) {
if(((streng[count]==' ')&&(streng[++count]==ord[0]))||(streng[count]==ord[0])) { ^^ farlig side effect, betyder at i || delen er count måske eller måske ikke opdateret, brug evt. count+1 og opdater bagefter.
brug evt. strstr til at finde ordet og så check at der er space før eller første bogstav af ordet er første tegn i streng.
Funktionen du ønsker findes faktisk i form af funktionen strstr, som du kan benytte ved at inkludere string.h i dit projekt. For at lave nøjagtig den funktion, du har beskrevet ovenfor, kunne du f.eks. gøre sådan (både funktion 'find_word' og testprogram til denne er medtaget i nedenstående eksempel) :
driis > find_word("hej", "k dhej j")=false går galt.
der skal et extra check på
char *res; res = strstr(tekst, ord); if (res && /* found a string */ ((res == tekst) || *(res-1) = ' ')) /* and it is either at the start or has space in front. */ return true; return false;
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.