gpt4 book ai didi

比较struct char元素(不知道怎么说)

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:33 25 4
gpt4 key购买 nike

我需要将一个结构元素的内容与另一个进行比较。

struct total_owners
{
int ADT2; //id number
char arkyk[7]; //license plate number
};

typedef struct total_owners owners;

struct total_offenses
{
char arkyk2[7];
int serious; //seriousness of offense (0 or 1)
};

typedef struct total_offenses offenses;

struct total_drivers
{
int ADT;
int ADO; //license number
};

typedef struct total_drivers drivers;

我想比较的是 total_offenses 中的 arkyk2total_owners 中的 arkyk。它们都是 XXX1234 格式(三个字母和 4 个数字)

这是我正在处理的功能

void sumpoints(offenses* b,owners* a, drivers* c, int amountowners , int amountoffenses ,int amountdrivers)
{
int totals[amountdrivers][3],i,j,h;
for (i=0;i<amountdrivers;i++)
{
totals[i][0] = c[i].ADT;
totals[i][1] = c[i].ADO;
totals[i][2] = 0;
}

for (h=0;h<amountdrivers;h++)
{
for (i=0;i<amountowners;i++)
{
for(j=0;j<amountoffenses;j++)
{
if (a[i].arkyk == b[j].arkyk2) // this is wrong (definitely)
{
if (c[h].ADT == a[i].ADT2)
{
totals[h][2] = totals[h][2]+1;
}
}
}
}
}
for (i=0;i<amountdrivers;i++)
{
printf("Total offenses per driver:\n");
printf(" ADT %d \t ADO %d \t total %d\n", totals[i][0] , totals[i][1] , totals[i][2]);
}
}

最终结果应该是一个总计数组,第一列是身份证号码,第二列是执照号码,最后一列是违规数量。

最佳答案

要进行字符串比较,您需要更改

if ( a[i].arkyk == b[j].arkyk2 )

if( strncmp( a[i].arkyk, b[j].arkyk2, 7 ) == 0)

正如@notlikethat 所指出的,使用普通 strcmp 可能会遇到麻烦,因为您有一个包含 7 个元素的数组来存储 7 个字符,因此没有空间用于终止 '\0'。通过指定比较应在 7 个字符后停止,可以避免此问题。

关于比较struct char元素(不知道怎么说),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20925996/

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