【发布时间】:2021-04-22 04:55:00
【问题描述】:
我遇到了一个错误,因为我需要将 2d 数组转换为 3d 数组。我理解这一点,因为如果我将数组赋值放在注释中,我就不再有问题了。我还将分配 3d 数组的代码部分发送到这里。
consulta agendaMedicos[50][50][50];
consulta agendaEnfermeiros[50][50][50];
我认为这无关紧要,但我使用的结构是这样的:
typedef struct Consulta {
char nomeUtente[70];
int numSNS;
int dia;
int mes;
int ano;
int horasInicio;
int minutosInicio;
int horasFim;
int minutosFim;
} consulta;
这是我如何将数组发送到新函数的示例
void novaConsulta(int *nAgendasMedico, consulta agendaMedicos[][50][50], int membroEscolhido, int clinicaSelecionada)
这是我唯一的功能:
void novaConsulta(int *nAgendasMedico, consulta agendaMedicos[][50][50], int membroEscolhido, int clinicaSelecionada)
{
do
{
puts("Insira o dia:");
scanf("%d", &agendaMedicos[nAgendasMedico[membroEscolhido]][membroEscolhido][clinicaSelecionada].dia);
system("cls");
}while (agendaMedicos[nAgendasMedico[membroEscolhido]][membroEscolhido][clinicaSelecionada].dia < 0 || agendaMedicos[nAgendasMedico[membroEscolhido]][membroEscolhido][clinicaSelecionada].dia > 31);
printf("%d", agendaMedicos[nAgendasMedico[membroEscolhido]][membroEscolhido][clinicaSelecionada].dia);
}
这是我的主要代码:
int main(int argc, char *argv[]) {
int membroEscolhido = 1, clinicaSelecionada = 0;
int nAgendasMedico[50];
consulta agendaMedicos[50][50][50];
consulta agendaEnfermeiros[50][50][50];
nAgendasMedico[membroEscolhido] = 0;
novaConsulta(nAgendasMedico, agendaMedicos, membroEscolhido, clinicaSelecionada);
nAgendasMedico[membroEscolhido]++;
return 0;
}
当我编译程序时,没有出现错误,发生的是程序在一段时间后关闭,如图:
这是我最小的可重现示例:
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
typedef struct Consulta {
char nomeUtente[70];
int numSNS;
int dia;
int mes;
int ano;
int horasInicio;
int minutosInicio;
int horasFim;
int minutosFim;
} consulta;
void novaConsulta(int *nAgendasMedico, consulta agendaMedicos[][50][50], int membroEscolhido, int clinicaSelecionada);
int main(int argc, char *argv[]) {
int membroEscolhido = 1, clinicaSelecionada = 0;
int nAgendasMedico[50];
consulta agendaMedicos[50][50][50];
consulta agendaEnfermeiros[50][50][50];
nAgendasMedico[membroEscolhido] = 0;
novaConsulta(nAgendasMedico, agendaMedicos, membroEscolhido, clinicaSelecionada);
nAgendasMedico[membroEscolhido]++;
return 0;
}
void novaConsulta(int *nAgendasMedico, consulta agendaMedicos[][50][50], int membroEscolhido, int clinicaSelecionada)
{
do
{
puts("Insira o dia:");
scanf("%d", &agendaMedicos[nAgendasMedico[membroEscolhido]][membroEscolhido][clinicaSelecionada].dia);
system("cls");
}while (agendaMedicos[nAgendasMedico[membroEscolhido]][membroEscolhido][clinicaSelecionada].dia < 0 || agendaMedicos[nAgendasMedico[membroEscolhido]][membroEscolhido][clinicaSelecionada].dia > 31);
printf("%d", agendaMedicos[nAgendasMedico[membroEscolhido]][membroEscolhido][clinicaSelecionada].dia);
}
我的开发程序是 DevC++ 一种 C 语言。 谢谢大家
【问题讨论】:
-
对不起,我设法创建了这个新示例,但遇到了同样的问题。我希望它现在变得更加可敬。提前致谢
-
你给它什么输入?
-
我什么都没写,程序需要一些时间思考,我没有按任何东西就崩溃了
-
您的数组有 125k 个元素,每个元素大约 90 个字节,您可能会溢出堆栈。再次,请先提取minimal reproducible example,这是一个无需任何更改即可编译和执行的文件。 edit您的问题是包含该信息,而不是单独的 sn-ps。另外,我没有看过那张图片,但通常引用文字更好。