c - 在另一个函数中使用修改后的结构
问题描述
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define ogrNo "34"
#define hex "0123456789ABCDEF"
int bussNo;
void hexControlFonk();
struct Otobusler {
int bussNumber;
char bussHexNum[100][6];
};
int main() {
srand(time(NULL));
char numaraDeposu[10000][6] = { "" };
struct Otobusler buss[1000];
scanf("%d", &bussNo);
for (int i = 1; i <= bussNo; i++) {
for (int j = 0; j < 4; j++) {
numaraDeposu[i][j] = hex[rand() % 16];
}
for (int k = 4; k >= 0; k--) {
int l = k + 2;
numaraDeposu[i][l] = numaraDeposu[i][k];
}
numaraDeposu[i][0] = ogrNo[0];
numaraDeposu[i][1] = ogrNo[1];
strcpy(buss[i].bussHexNum[i], numaraDeposu[i]);
buss[i].bussNumber = i;
printf("%d-%s\n", buss[i].bussNumber, buss[i].bussHexNum[i]);
}
hexControlFonk(buss[1000]);
printf("%s\n", buss[10].bussHexNum[10]);
}
void hexControlFonk(struct Otobusler buss[1000]) {
for (int m = 1; m < bussNo; m++) {
for (int n = 1; n < bussNo; n++) {
if (strcmp(buss[m].bussHexNum[m], buss[n].bussHexNum[n]) == 0 && n != m) {
printf("%d,", n);
}
}
}
printf("%s\n", buss[10].bussHexNum[10]);
}
我制作了一个程序,为每条总线生成十六进制数字。他们从34
(我的学校编号)开始,它工作正常,但我不能在hexControlFonk()
. 此函数检查任何 2 个十六进制代码是否相同。但是主总线 10 和总线 10hexControlFonk
是不一样的。需要帮忙。
解决方案
以下是您的代码的一些重要问题(来自评论的编译列表)。
正如您现在已经确认的那样,修复这些也可以解决您的问题。
修复错误的原型:
void hexControlFonk();
->void hexControlFonk(struct Otobusler buss[1000]);
将正确原型所需的类型声明移到原型之前。
WhozCraig 评论:正确调用函数,使用数组(有效地使用指向它的指针);hexControlFonk(总线[1000]);==> hexControlFonk(总线);`
Werner Henze 的评论:(由上面介绍)不要使用从数组后面读取的值调用函数,即使用允许范围 0...999 中的索引,而不是 1000。
推荐阅读
- oracle - SQL Developer 错误 ORA-04072 无效的触发器类型问题
- json - 如何在 Angular 应用程序中使用 JWT Token 获取角色名称?
- kotlin - 如何将 Gradle testImplementation testFixtures('com.bla:bla-bla:master_d171111') 转换为 Kotlin Gradle?
- zebra-printers - 我可以在 Windows 操作系统上通过 CMD 运行 ZPL 命令吗?
- python - 继承元类关键字参数
- c++ - 混合隐式和显式 CUDA 流
- rest - 如何使用 Create User API 在 Oracle 云应用程序中创建用户时传递角色信息
- c++ - 在 C++ 编程中使用“endl”
- emacs - 如何从 MELPA 手动安装软件包?
- postgresql-13 - 将 postgres pod 版本 12 更新到 13 时出现问题