MrForsen 2020-10-03 15:24 采纳率: 100%
浏览 1697
已采纳

C语言[Error] 'strcmp' was not declared in this scope是怎么回事?

我在网上查了说是缺少头文件或者没被括号包住的原因,可我这个貌似都没出现上述问题啊,求大佬帮帮我这个刚学计算机的学生


```#include<stdio.h>                                                         //头文件名 
#include<conio.h>                                                         //没有此头文件名无法调用getch和getchar函数
#include<stdlib.h>                                                        // system函数所需的头文件名,没有则无法调用 
#include<string.h>                                                        // strcmp函数所需的头文件名,没有则无法调用 
#define N 9999                                                            //宏定义,便于更改录入学生的人数 
struct Student                                                            //利用结构体编程更方便 
{
    char num[20];                                                         //给学生添加个学号方便查询 
    char name[20];                                                        //姓名 
    float score;                                                          //分数 
}stu[N];
    int main()
{
    int c,k;
    int i,j,p=0;
    for(i=0;i<N;i++)
    {   
        printf("请输入第%2d个学生的学号、姓名、成绩:\n",i+1);
        scanf("%s%s%f",&stu[i].num,stu[i].name,&stu[i].score);            //用结构体录入数据 
        if(p<=i)                                                          //记录循环次数 
        p++;
        printf("再按回车即可继续输入,按Esc停止输入\n");
        if ((c=getch())==27)                                              //利用了 ASCLL码,当检测到键盘按下“Esc”键时终止循环 
        break;
    } 
      printf("\n\n学号\t姓名\t成绩\n");
      for(i=0;i<p;i++)
        printf("%s\t%s\t%-10.1f\n",stu[i].num,stu[i].name,stu[i].score);        //输出成绩


        printf("点击空格键即可查看按成绩高低的排序"); 
    if ((c=getch())==32)                                                  //同道理 
    { 
     for(j=0;j<p;j++)                                                    //双循环语句的用途是:将结构体内的第N个成绩 
    {
        for(k=j+1;k<p;k++)
        { 
            if(stu[j].score<stu[k].score)                                //比较大小,原理是将学生分数依次进行比较,然后将小的排在数组的末尾,依次类推,最后得到从大到小的数组排序 
            {                                                             
                stu[p]=stu[j];                                           //若要查看从小到大的排序,仅需将小于号改为大于号即可 
                stu[j]=stu[k];
                stu[k]=stu[p];
            }
        } 
    }
     printf("\n按成绩优异排序后的结果:");
     printf("\n\n学号\t姓名\t成绩\n");

    for(i=0;i<p;i++)
        printf("%s\t%s\t%-10.1f\n",stu[i].num,stu[i].name,stu[i].score);        //输出成绩
    } 
        printf("\n若要查询学生成绩请按Esc键,亲~");
    if((c=getch())==27)                                                        //利用了 ASCLL码,当检测到键盘按下“Esc”键时进入查询页面 
    {
        char a[20];                                                            //定义一个数组,用于存储你要查询的学号 
        i=0;
        system("cls");                                                         //利用该函数调用DOS命令清屏 
        printf("请输入您想查询成绩的那位学生的学号:");              
        scanf("%s",a);                                                         //将你要查询的学号放入数组a【20】中 
        while(i<p)                                                             //利用循环找到与a【20】相同的结构体数组 
        {
            if(strcmp(stu[i].num,a)==0)                                        //利用strcmp函数进行数组之间的比较 
            {
                printf("\n学号:%s\t姓名:%s\t成绩:%-10.1f\n",stu[i].num,stu[i].name,stu[i].score);
                break;                                                          
            }
        }
    }
} 
  • 写回答

3条回答 默认 最新

  • threenewbee 2020-10-03 16:01
    关注
    #include <cstring>
    看看
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 主要进行描述非满管状态下,管路的摩阻系数是怎么变化的,在管路长度方向上是怎么分布的(标签-matlab)
  • ¥15 动态多目标优化,求解定义的问题的POF和POS公式
  • ¥30 实验 :UML2.0 行为建模
  • ¥15 设计一种优化调度算法并结合论文中的案例给出调度计划
  • ¥15 py文件打包exe报错TypeError:expected str,bytes or os.PathLike object,not_io.BytesIO
  • ¥15 Java编写学籍信息管理系统
  • ¥15 IPXE网刻客户机找不到服务端
  • ¥15 小贝360-4 配二个 华772S 设置WⅰFi5G 连接
  • ¥15 vs2022的QT报错,好像是缺少winextras
  • ¥15 怎么看 cst中一个面的功率分布图