gpt4 book ai didi

c - 当我使用结构作为参数时 strcmp() 出错

转载 作者:太空狗 更新时间:2023-10-29 14:50:39 28 4
gpt4 key购买 nike

我的程序需要这些功能:

注意:我没有包括数字 1,2 和 4 的代码,因为我已经完成了它们。第三个是我的问题。

  1. 只要用户仍然愿意,程序就应该持续允许用户输入。 (动态)
  2. 获取学生的最终成绩(frst_grade、scnd_grade、fnl_grade的平均值)
  3. 获取每所大学的学生人数。
  4. 通过输入 s_id 获取学生姓名。

我的问题是如何将搜索输入与 s_college 中的用户输入进行比较以获得学生人数。我知道的唯一方法是使用 strcmp() 但它给了我这个错误:从 'char' 到 'const char*' 的无效转换 [-fpermissive]

那么我如何比较这两者以获得每所大学的学生人数?

#include<stdio.h>    
#include<string.h>
#include<conio.h>

int i,n,sum,search,num=0,ctr=0;

char answer,choice,choice2,search2;

struct record{

int s_id;
char s_name[100];
char s_course;
char s_college[5];
int s_scoress;
}id[100],name[100],course,college[100],scores;

struct s_scores{
int frst_grade;
int scnd_grade;
int fnl_grade;
}first,second,final;



void ADD();
void COLLEGE();
void ID();


void COLLEGE(){
printf("Enter college (abbreviation only)");
scanf("%s",&search2);
for(i=0;i<num;i++){
if(strcmp(college[i].s_college,search2)==0);
ctr++;
}
printf("The number of students in %s is %d",search2,ctr);

最佳答案

让我们看一下这些(部分)行:

char ..., search2;
...
scanf("%s",&search2);
...
...strcmp(college[i].s_college,search2)...

变量 search2 是一个单个 字符。尝试将字符串放入其中将至少写入两个字符:您读取的字符串加上字符串终止符。这意味着您将越界书写。

然后您将字符变量用作 strcmp 的参数,后者将 search2 的内容转换为指针并将该指针用作指向字符串的指针。

这两个问题都会导致未定义的行为

search2 应该是一个字符串吗?然后将它声明为一个数组,比如

char ..., search2[100];

如果 search2 应该是单个字符,那么首先您需要读取单个字符

scanf("%c", &search2);  // Note the changed format to read a single character

然后您需要将比较更改为不使用 strcmp

关于c - 当我使用结构作为参数时 strcmp() 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37236406/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com