On Thu, 3 Oct 1996, The Arrow wrote: > Hello! > I am having a little trouble with the isname() function. > The following two calls both returns true: > isname("long sword", "long sword"); > isname("long sword", "short sword"); > i.e. it uses "long" OR "sword". I want it to use "long" AND "sword" when > looking through the keyword list, i.e. only the first of the two calls > above should return true. > Can anyone please help me with that? isname() only test one word between words, so to test for "long sword" you have to do something like this: if(isname("long", "long sword") && isname("sword", "long sword")) /* This is true */ if(isname("long", "short sword") && isname("sword", "short sword)) /* this is false */ So basicaly, you have to test on each word (In this case "long" and "sword") to get the excact one. /* A little quicky */ int test(char *keywords, char *testwords) { int ok = TRUE; char lookword[256]; keywords = one_argument(keywords, lookword); while(ok && *lookword) if(isname(lookword, testwords)) keywords = one_argument(keywords, lookword); else ok = FALSE; return(ok); } Now.. Before anyone come and say "why not just use str_cmp ??", then remember, its possible that keywords are "long sword" and testwords are "sword long" :) Hope it helps.. --- Erik Niese-Petersen Aka Quint The typo God Realms of Darkness IMP [ISP change! Waiting for hardware :( ] +-----------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://cspo.queensu.ca/~fletcher/Circle/list_faq.html | +-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST