c++结构体与字符数组的比较问题

  1. 报错c++禁止指针和整数进行比较,我也没有搜到我这种情况(结构体和数组)的解决方法,这个要怎么解决

    img

img

【以下回答由 GPT 生成】

问题分析:

在代码中,我们需要比较结构体数组中的school字段和字符数组sc的值是否相等。然而,由于结构体中的school字段是一个字符数组,不能直接和一个字符数组进行比较。 导致编译器给出了指针和整数进行比较的错误提示。

解决方案:

一种解决方案是使用C++中的字符串比较函数strcmp()来进行字符串的比较。另外,结构体数组中的每一个school字段可以修改为std::string类型,以便使用字符串比较函数。 以下是修改后的代码:

#include <iostream>
#include <cstring>
#include <string>

struct Goal {
    char program[20];
    char sex[21];
    std::string school;
    int grade;
    int goal;
};

int main() {
    int i, j, n, x;
    struct Goal a[20];
    char sc[20];
    int g[5] = {0}, m[5] = {0}, w[5] = {0};

    std::cout << "请输入n的值:" << std::endl;
    std::cin >> n;

    for (i = 0; i < n; i++) {
        std::cout << "请输入学生的program、sex、school、grade和goal:" << std::endl;
        std::cin >> a[i].program >> a[i].sex >> a[i].school >> a[i].grade >> a[i].goal;
    }

    for (i = 0; i < n; i++) {
        x = std::stoi(a[i].school);

        for (j = 0; j < n && std::stoi(a[j].school) == x; j++) {
            g[i] = g[i] + a[j].goal;
            w[i]++;
        }

        for (j = 0; j < n && std::stoi(a[j].school) == x && strcmp(a[j].sex, "man") == 0; j++) {
            m[i] = m[i] + a[j].goal;
        }

        for (j = 0; j < n && std::stoi(a[j].school) == x && strcmp(a[j].sex, "woman") == 0; j++) {
            w[i] = w[i] + a[j].goal;
        }
    }

    std::cout << "各个学校总分和男生总分是:" << std::endl;
    for (i = 0; i < n; i++) {
        std::cout << a[i].school << ": " << g[i] << " " << m[i] << std::endl;
    }

    return 0;
}

请注意,我们使用了std::stoi()将字符串转换为整数,使用strcmp()来进行字符串的比较。

这样修改后的代码可以解决结构体数组和字符数组的比较问题。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^