c - C中的结构和预期表达式
问题描述
问题是这样的:
error: expected expression before 'Cadastro'
该代码不接受“Cadastro”,它之前要求一个表达式。此错误存在于几行代码中,尤其是在函数中。错误在第 96 行到第 180 行之间。在第 149 行,出现“预期标识符或 '(' 在 '[' 标记之前”的错误。
我的代码与 Struct 有问题
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <locale.h>
#define SIZE 100 //constante SIZE com valor de 3
#define MAXIMO 50
#define MAXS 11
typedef struct {
int cod;
int vazio;
char nome_paciente[MAXIMO];
int cpf_paciente[MAXS];
int numero_carteirinha[MAXS];
char nome_medico[MAXIMO];
char especialidade_medico[MAXIMO];
char data_consulta[MAXS];
char data_revisao[MAXS];
int codigo_medicamento[MAXS];
int codigo_fornecedor[MAXS];
float valor_medicamento[MAXS];
} Cadastro;
int opcao = 0, opt;
int verifica_pos(void);
int verifica_cod( int cod );
void cadastroP(int cod,int pos);
void listarDados();
void cadastroPedido();
void pesquisar(void);
void excluirCliente (void);
int main() //inicio do int main
{
Cadastro cadastro[SIZE];
do //do com while para realizar o codigo enquanto estiver dentro dos parametros
{
if(opcao==0) //if para a exibicao do menu
{
printf("\n1 - cadastro");
printf("\n2 - pesquisa");
printf("\n3 - listar");
printf("\n4 - alterar");
printf("\n5 - dados");
printf("\n6 - sair\n"); //menu com as opcoes
printf("\nEscolha sua opcao:\n");
fflush(stdin); //limpando buffer
scanf("%d", &opcao); //pegando a escolha do usuario
}
if(opcao==1) //if para entrar na area de cadastro
{
cadastrar();
}
if(opcao==2)
{
pesquisar();
}
if(opcao==3)
{
listarDados();
}
if(opcao==4)
{
}
if(opcao==5)
{
}
if(opcao==6)
{
return 0;
}
if(opcao<0 && opcao>6)
{
printf("\nOpcao inexistente\n");
opcao=0;
}
}while(opcao>=0 && opcao<6);
}
void listarDados()
{
int i, menuVoltar;
for(i=0;i<SIZE;i++){
if(Cadastro[i].nome_paciente != NULL)
{
printf("\n\nNome do paciente:", Cadastro[i].nome_paciente);
printf("\nCPF do paciente:", Cadastro[i].cpf_paciente);
printf("\nNumero da carteirinha:", Cadastro[i].numero_carteirinha);
printf("\nNome do medico: ", Cadastro[i].nome_medico);
printf("\nEspecialidade do medico: ", Cadastro[i].especialidade_medico);
printf("\nData da consulta: ", Cadastro[i].data_consulta);
printf("\nData da revisao: ", Cadastro[i].data_revisao);
printf("\nCodigo do medicamento: ", Cadastro[i].codigo_medicamento);
printf("\nCodigo do fornecedor: ", Cadastro[i].codigo_fornecedor);
printf("\nValor do medicamento: ", Cadastro[i].valor_medicamento);
}
}
printf("Pressione 0 para volta ao menu principal");
fflush(stdin);
scanf("%d", &menuVoltar);
if(menuVoltar == 0)
{
opcao = 0;
}
system("cls");
}
void cadastrar(int cod, int pos)
{
int i;
do{
pos = verifica_pos();
Cadastro[pos]. = cod;
printf("\nDigite o Nome do paciente: ");
gets(Cadastro[pos].nome_paciente);
printf("\nDigite o CPF do paciente: ");
gets(Cadastro[pos].cpf_paciente);
printf("\nDigite o numero da carteirinha do paciente: ");
gets(Cadastro[pos].numero_carteirinha);
printf("\nDigite o nome do medico: ");
gets(Cadastro[pos].nome_medico);
printf("\nDigite a especialidade do medico: ");
gets(Cadastro[pos].especialidade_medico);
printf("\nDigite a data da consulta: ");
gets(Cadastro[pos].data_consulta);
printf("\nDigite a data da revisão: ");
gets(Cadastro[pos].data_revisao);
printf("\nDigite o codigo do medicamento: ");
gets(Cadastro[pos].codigo_medicamento);
printf("\nDigite o codigo do fornecedor: ");
gets(Cadastro[pos].codigo_fornecedor);
printf("\nDigite o valor do medicamento: ");
gets(Cadastro[pos].valor_medicamento);
Cadastro[pos].vazio = 1;
opt ==1;
getchar();
}while(opt==1);
system("cls");
main();
}
void pesquisar(void)
{
int cont = 0, cod;
printf("\nEntre com o código\n");
scanf("%d",&cod);
fflush(stdin);
system("cls");
while (cont <= SIZE)
{
if (Cadastro[cont].cod == cod)
{
if (Cadastro[cont].vazio == 1)
{
printf("\n\nNome do paciente:", Cadastro[cont].nome_paciente);
printf("\nCPF do paciente:", Cadastro[cont].cpf_paciente);
printf("\nNumero da carteirinha:", Cadastro[cont].numero_carteirinha);
printf("\nNome do medico: ", Cadastro[cont].nome_medico);
printf("\nEspecialidade do medico: ", Cadastro[cont].especialidade_medico);
printf("\nData da consulta: ", Cadastro[cont].data_consulta);
printf("\nData da revisao: ", Cadastro[cont].data_revisao);
printf("\nCodigo do medicamento: ", Cadastro[cont].codigo_medicamento);
printf("\nCodigo do fornecedor: ", Cadastro[cont].codigo_fornecedor);
printf("\nValor do medicamento: ", Cadastro[cont].valor_medicamento);
}
system ("pause");
system("cls");
break;
}
}
cont++;
if (cont > 200)
{
printf("\nCódigo não encontrado, pressione enter para volar ao menu principal\n");
getchar();
system("cls");
}
}
解决方案
Cadastro
是类型的名称。您将要使用cadastro
,变量的名称。例如:
printf("\n\nNome do paciente:", cadastro[i].nome_paciente);
推荐阅读
- javascript - axios 中的 GET/POST 不工作,但 fetch 工作
- ios - XCode - 创建预编译的二进制框架
- python - Pygame:如何以随机方向射击物体?
- python - 尝试运行 0x Launch Kit 向导时出现回溯错误“urlopen”
- node.js - 尝试为 clamAV 指定二进制路径
- teradatasql - 我有一个表格可以在 teradata 的列中找到逗号或管道...任何帮助将不胜感激..请建议通用查询
- postgresql - Postgres:“无法将 sql 模块加载到数据库集群中”等错误
- html - 如何在 Ion-card 上实现延迟加载
- docker - Dockerfile 中 EXPOSE 命令的目的是什么?
- java - Maven 抛出 java.lang.ClassNotFoundException: lombok.javac.handlers.HandleAccessors 即使我从项目中完全删除了 lombok?