我试图在C中为字符串实现线性搜索功能,但它目前还没有工作。这是我的代码:
// Linear search for name matching input string
int listSearch(struct LinkedList* linkedList, char name)
{
struct StudentRecord* temp = linkedList->head; // Go to first item in linked list
int count = 0; // Count variable to give index of search item
while((temp != NULL) && (name != temp->name))
{
temp = temp->next;
count++;
}
return count;
}
这是对listSearch的函数调用:
printf("\nItem: Tim\nIndex: %d", listSearch(list_1, "Tim"));
'添'在索引3处,但输出始终将他置于索引4(列表中总共有4个项目,因此索引4不存在) - 对于我们搜索的任何项目也是如此。这让我相信(名字!= temp->名称)条件失败,但我不能为我的生活看到原因......任何人都可以给我一个暗示为什么它不是&# 39;工作?
答案 0 :(得分:0)
您传入的是char,而不是指向char的指针,因此,您将char与字符串指针进行比较。您还需要比较字符串。
int listSearch(struct LinkedList* linkedList, char * name)
{
struct StudentRecord* temp = linkedList; // Go to first item in linked list
int count = 0; // Count variable to give index of search item
while(temp != NULL) {
if (temp->name != NULL && strcmp(name,temp->name)) {
count++;
}
temp = temp->next;
}
return count;
}
答案 1 :(得分:0)
使用strcmp比较两个字符串,例如:
if(strcmp(a,b)==0)
printf("Entered strings are equal");
else
printf("Entered strings are not equal");