C Strncmp返回部分输入

时间:2012-12-09 22:28:25

标签: c list input linked-list strncmp

我目前正在运行链表结构,我需要找到一种让用户在结构中搜索某个字段的方法。我已经完成了这个,但问题是它必须是准确的。例如,如果用户输入“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;
}

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

3 个答案:

答案 0 :(得分:3)

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

如果您只想返回完全匹配,请使用strcmp代替

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

如果您想要返回部分匹配,请使用strncmp但超过与搜索字符串匹配的尺寸:

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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