1

我目前正在运行一个链表结构,我需要找到一种方法让用户在结构中搜索某个字段。我已经这样做了,但问题是它必须是准确的。例如,如果用户输入“maggie”,它将返回结果,但如果用户输入“mag”,则不会像我想要的那样返回 Maggie 记录。

int counter = 0;
char search[MAX];
record_type *current = head;

printf("\n\n- - - > Search Records\n\n");
printf("\tSearch: ");
scanf("%s", search);

/* search till end of nodes */
while(current != (record_type*) NULL) {
    if(strncmp(current->name, search, MAX) == 0) {
        printf("\t%i. %s", counter, current->name);
        printf("\t%u", current->telephone);
        printf("\t%s\n", current->address);
        counter++;
    }
    current = current->next;
}

有任何想法吗?我猜有一种方法可以与字符进行比较?谢谢!

4

3 回答 3

3

你的问题并不完全清楚...

如果您只想返回完全匹配,请strcmp改用

if (strcmp(current->name, search) == 0) {

如果要返回部分匹配,请使用strncmp与搜索字符串匹配的大小:

if (strncmp(current->name, search, strlen(search)) == 0) {
于 2012-12-09T22:30:06.883 回答
2

而不是strncmp(current->name, search, MAX)使用strncmp(current->name, search, strlen(search))或使用该strstr功能。

于 2012-12-09T22:31:52.660 回答
0

strncmp比较要比较的字符数。所以不要比较那么多。

首先比较字符串长度,或者只使用strcmp().

于 2012-12-09T22:30:33.787 回答