【发布时间】:2021-03-30 04:50:25
【问题描述】:
如何使用首字母在具有相同首字母的链表中搜索人名?我用过strstr,但还是不行。
void searchStudent(char searchName[]){
curr = head;
int i = 1;
while(curr->next != NULL && strstr(curr->name, searchName) != 0){
curr = curr->next;
}
if (curr->next == NULL){
printf("There no students with this initials %s\n", searchName);
}
else{
curr = head;
while(curr->next != NULL){
if(strstr(curr->name, searchName) == 0){
printf("Student #%d\n", i);
printf("Name : %s\n", curr->name);
printf("Student Number : %s\n", curr->number );
printf("------------------------------------\n");
i++;
curr = curr->next;
}
}
}
}
该编码的输出始终是“没有学生使用这个缩写%s\n”
【问题讨论】:
-
请改进您的示例代码以使其独立。这意味着包括一个主树和初始树,其中包含证明问题的最少数据。删除与演示问题无关的代码,例如最后 3 个打印语句。
-
你把
strstr和strcmp搞混了吗?第一个函数在字符串中搜索子字符串并返回指向它的指针,如果找不到子字符串,则返回 null。第二个将字符串分类为小于、等于或大于另一个字符串。当有命中时,strstr返回非 null,strstr返回 0。 -
支持@AllanWind,为了改善你的问题,更具体的建议是: 1.简单解释一下你的链表的数据结构,即curr。 2. 由于这是函数,输出取决于你是如何调用它的,所以你应该发布外部调用者上下文来说明你是如何调用它的。
标签: c linked-list