蒸汽y 2023-06-24 13:21 采纳率: 50%
浏览 27
已结题

C++学生管理系统用strstr实现模糊查找,发现只找到一个学生的信息?

C++学生管理系统用strstr()函数实现模糊查找,发现只找到一个学生的信息。

strstr()函数的定义:

char *strstr(const char *haystack, const char *needle)

我写的模糊查询代码:

img

我定义的所有的学生信息(5位学生姓名中都有“一”):

img

学生结构体:

img

输入“一”查找的结果:

img

只找到一个学生的信息,且五行都输出同一个学生的信息,请问是为什么?要怎么才能实现模糊查询呢?

  • 写回答

2条回答 默认 最新

  • a5156520 2023-06-24 13:43
    关注

    z=result-s[w].name这行不需要,然后后面一行直接打印下标w的结构元素信息即可,因为result!=nullptr,即表示当前姓名中包含字符串name1。

    测试如下:

    参考链接:

    #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;
        
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月2日
  • 已采纳回答 6月24日
  • 修改了问题 6月24日
  • 创建了问题 6月24日

悬赏问题

  • ¥25 主成分分析中的第一第二主成分分别代表哪些参数
  • ¥15 oracle数据库查询语句问题
  • ¥15 有没有c++绘制算法的佬们吗救孩一下
  • ¥15 android 蓝牙闪退
  • ¥15 绝缘子污秽comsol仿真参数
  • ¥15 Fatal error in Process MEMORY
  • ¥15 labelme生成的json有乱码?
  • ¥30 arduino vector defined in discarded section `.text' of wiring.c.o (symbol from plugin)
  • ¥20 如何训练大模型在复杂因素组成的系统中求得最优解
  • ¥15 关于#r语言#的问题:在进行倾向性评分匹配时,使用“match it"包提示”错误于eval(family$initialize): y值必需满足0 <= y <= 1“请问在进行PSM时