首页 > 解决方案 > 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");
    }
}

标签: ccodeblocks

解决方案


Cadastro是类型的名称。您将要使用cadastro,变量的名称。例如:

printf("\n\nNome do paciente:", cadastro[i].nome_paciente);

推荐阅读