我目前正在运行链表结构,我需要找到一种让用户在结构中搜索某个字段的方法。我已经完成了这个,但问题是它必须是准确的。例如,如果用户输入“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;
}
有什么想法吗?我猜有一种方法可以与字符进行比较?谢谢!
答案 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()
。