Problems compiling code in C - "[Error]: Id returned 1 Exit status"

Asked

Viewed 34 times

-2

Good afternoon guys! How are you?

I’m learning codar in C as part of a college course. In the current exercise, we were asked to generate a simple program for inserting/removing records. I relied on the proposed exercises as well as the subject of the discipline to generate my code, but when trying to compile the error "[Error]: Id returned 1 Exit status" always occurs. I can not see any other apparent error (debugged many of them), but the cited error persists. Below follows the source code:

//Bibliotecas inicializadas:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>

//Constantes utilizadas:
#define size 5 // Tamanho máximo definido como 5 (cinco posições na fila)

//Corpo do Elemento:
struct item{
    int student_RA; //Declarar Número da Carteirinha do Estudante
    char fileName[50]; //Declarar Nome do Arquivo
    char fileExtension[6]; //Declarar Extensão do Arquivo
    int professorRegistration; //Declarar o Número de Matrícula do professor
};

//Corpo da Fila:
struct queueBody{
    struct item data[size]; //Declarar estrutura (registro) dos dados de cada posição
    int firstElement; //Declarar posição do primeiro elemento. Será usado para inicializar a fila
    int lastElement; //Declarar posição do último elemento. Será usado para salvar a posição do item inserido por último.
};

//Variáveis de escopo global:
struct queueBody queue;
int op;

//Protipação:
void showMenu(); //Declarar função que irá mostrar o Menu Inicial
void queue_newItem(); //Declarar função que adiciona novo item
void queue_removeItem(); //Declarar função que remove um item existente
void queue_clearQueue(); //Declarar função que limpa a fila
void queue_showQueue(); //Declarar função que mostra a fila existente
void queue_exitProgram(); //Declarar função que sai do programa

//Função Principal:
int main(){
    setlocale (LC_ALL, "Portuguese");
    op = 1;
    queue.firstElement = 0;
    queue.lastElement = 0;
    while (op != 0){
        system("cls"); // Limpar a tela
        queue_showQueue();
        showMenu();
        scanf("%d", &op);
        switch (op){
            case 1:
                queue_newItem();
            break;
            case 2:
                queue_removeItem();
            break;
            case 3:
                queue_clearQueue();
            break;
        }
    }
    return(0);
    queue_exitProgram();
}

//Função 'newItem': entrar novo dado na fila na última posição em aberto
void queue_showItem(){
    if(queue.lastElement == size-1){
        printf("\nA fila atingiu seu limite. Por favor, tente novamente mais tarde:\n\nNúmero de elementos: " + queue.lastElement);
        system("pause");
    }
    else{
        printf("\nDigite o Código da Carteira de Estudante:");
        scanf("%d", &queue.data[queue.lastElement].student_RA);
        printf("\nDigite o Nome do Arquivo:");
        scanf("%s", &queue.data[queue.lastElement].fileName);
        printf("\nDigite a Extensão do Arquivo:");
        scanf("%s", &queue.data[queue.lastElement].fileExtension);
        printf("\nDigite a Matrícula do Professor:");
        scanf("%d", &queue.data[queue.lastElement].professorRegistration);
        queue.lastElement++;
    }
}
//Função 'removeItem': remover o item na primeira posição da fila
void queue_removeItem(){
    if(queue.firstElement == queue.lastElement){
        printf("\n A fila está vazia! Não há o que remover. Retornando ao Menu Inicial.");
        system("pause");
    }
    else{
        int pos;
        for (pos = 0; pos < size; pos++){
            queue.data[pos].student_RA = queue.data[pos+1].student_RA; //mover o dado 'Código de Carteirinha' uma posição acima
            strcpy(queue.data[pos].fileName, queue.data[pos+1].fileName); //mover o dado 'Nome do Arquivo' uma posição acima
            strcpy(queue.data[pos].fileExtension, queue.data[pos+1].fileExtension); //mover o dado 'Extensão do Arquivo' uma posição acima
            queue.data[pos].professorRegistration = queue.data[pos+1].professorRegistration; //mover o dado 'Matrícula do Professor' uma posição acima
        }
        queue.data[queue.lastElement].student_RA = 0; //limpar dados da última posição, após mover a fila uma posição acima
        strcpy(queue.data[queue.lastElement].fileName, "");
        strcpy(queue.data[queue.lastElement].fileExtension, "");
        queue.data[queue.lastElement].professorRegistration = 0;
        queue.lastElement--; // Decrescer uma unidade da posição final
    }
}

//Função 'clearQueue': limpar TODAS AS POSIÇÕES OCUPADAS da fila
void queue_clearQueue(){
    int pos;
    for(pos = 0; pos <= queue.lastElement; pos++){
        queue.data[queue.lastElement].student_RA = 0;
        strcpy(queue.data[queue.lastElement].fileName, "");
        strcpy(queue.data[queue.lastElement].fileExtension, "");
        queue.data[queue.lastElement].professorRegistration = 0;
    }
}

//Função 'showQueue': mostra todos os elementos na fila e seus atributos
void queue_showQueue(){
    int pos;
    for(pos = 0; pos < queue.lastElement; pos++){
        printf("\nÍndice de Processamento: " + pos+1);
        printf("\nCódigo da Carteira: " + queue.data[pos].student_RA);
        printf("\nNome do Arquivo: %s", queue.data[pos].fileName);
        printf("\nExtensão do Arquivo: %s", queue.data[pos].fileExtension);
        printf("\nMatrícula do Professor: " + queue.data[pos].professorRegistration);
        printf("\n ------------------------- \n");
    }
}

//Função 'showMenu': mostra as opções de navegação do menu para acionar as demais funções
void queue_showMenu(){
    printf("Bem-vindo ao sistema de filas. Por favor, selecione uma opção:\n");
    printf("1 - Inserir Novo Item\n");
    printf("2 - Remover Última Item Adicionado\n");
    printf("3 - Remover Todos os Itens Existentes");
    printf("0 - Sair do Programa");
}

//Função 'exitProgram': imprime na tela uma mensagem de deslogamento quando o usuário escolhe sair do programa.
void queue_exitProgram(){
    printf("Obrigado por utilizar o sistema de filas. Volte sempre!");
}

Any idea what might be going on? Any help is welcome. Thank you very much right now!

Leonardo.

1 answer

0

You’re calling the procedure queue_newItem ();, (I suppose it’s a procedure because it’s not with an instruction printf) without having defined it. Post the procedure queue_newItem ();,. In addition, there are additional bugs in the code.

In a comment you put // Função 'newItem': insira novo dado na linha na última posição em aberto and below you put void queue_showItem () { Starting that what is below the comment is a procedure and not a function because it is a void and after that the name does not match.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.