C++学生管理系统用strstr()函数实现模糊查找,发现只找到一个学生的信息。
strstr()函数的定义:
char *strstr(const char *haystack, const char *needle)
我写的模糊查询代码:
我定义的所有的学生信息(5位学生姓名中都有“一”):
学生结构体:
输入“一”查找的结果:
只找到一个学生的信息,且五行都输出同一个学生的信息,请问是为什么?要怎么才能实现模糊查询呢?
C++学生管理系统用strstr()函数实现模糊查找,发现只找到一个学生的信息。
strstr()函数的定义:
char *strstr(const char *haystack, const char *needle)
我写的模糊查询代码:
我定义的所有的学生信息(5位学生姓名中都有“一”):
学生结构体:
输入“一”查找的结果:
只找到一个学生的信息,且五行都输出同一个学生的信息,请问是为什么?要怎么才能实现模糊查询呢?
z=result-s[w].name这行不需要,然后后面一行直接打印下标w的结构元素信息即可,因为result!=nullptr,即表示当前姓名中包含字符串name1。
测试如下:
参考链接:
https://www.runoob.com/cprogramming/c-function-strstr.html
#include <iostream>
#include <string.h>
#include <stdlib.h>
#define max 50
#define student_number 5
using namespace std;
struct student{
char name[max];
char num[max];
char sex[max];
int age;
char hometown[max];
char major[max];
}s[5]={
{"张一三","202211701100","男",18,"广东省湛江市","软件工程"},
{"李一四","202211701101","男",17,"广东省广州市","计算科学"},
{"王一五","202211701102","女",17,"广东省深圳市","计算科学"},
{"赵一六","202211701103","男",19,"广东省茂名市","软件工程"},
{"孙一七","202211701104","女",18,"广东省河源市","软件工程"},
};
void search_by_name2(){
int w=0;
int z;
int x=student_number;
char name1[max];
system("cls");
cout<<"请输入查找的姓名:";
cin>>name1;
printf_table();
for(w=0;w<student_number;w++){
// https://www.runoob.com/cprogramming/c-function-strstr.html
// 寻找当前学生结构元素中的姓名字段中,第一次出现name1字符串的位置
char *result = strstr(s[w].name,name1);
// 如果找到,则打印对应学生信息
if(result!=nullptr){
// z=result-s[w].name;
// cout<<"| "<<s[z].name<<"| "<<s[z].num<<"| "<<s[z].sex<<"| "<<s[z].age<<"| "<<s[z].hometown<<"| "<<s[z].major<<endl;
cout<<"| "<<s[w].name<<" | "<<s[w].num<<" | "<<s[w].sex<<" | "<<s[w].age<<" | "<<s[w].hometown<<" | "<<s[w].major<<endl;
}
}
}
int main(void){
search_by_name2();
return 0;
}