Ir para conteúdo
Fórum Script Brasil
  • 0

não imprime o que salvei na struct , codigo abaixo


lop3s

Pergunta

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>


#define const 5

struct cadastro{
    int cod;
    char autordaobra[50];
    char obra[50];
    char editora[50];
};

int i, j, cad, opcao;
struct cadastro livro[const];

void mostrar() {

if(i != 0) {
        
                for(j=0; j<i; j++){    
                printf ("Código: %d\n", livro.cod);
                   printf ("Autor da obra: %s\n",livro.autordaobra);
                printf ("Obra: %s\n", livro.obra);
                printf ("Editora: %s\n\n",livro.editora);
                                  }
                           }
                           
                else
                printf("Lista vazia!\n");
}

void cadastro(){
    
 if (i <const){
                    
            system("cls");
            printf("1 – Inserir um novo cadastro\n");
            printf("2 – Mostrar todos os cadastros\n");
            printf("0 – Encerrar\n");
            fflush(stdin);
            livro.cod = i+1;
            fflush(stdin);
            printf("Insira o nome do autor da obra %d:\n", i+1);
            fflush(stdin);
            gets(livro.autordaobra);
            fflush(stdin);
              printf("Insira o nome da obra %d:\n", i+1);
            gets(livro.obra);
            fflush(stdin);
            printf("Insira o nome da editora %d:\n", i+1);
            gets(livro.editora);
            fflush(stdin);
            system("cls");
            printf("1 – Inserir um novo cadastro\n");
            printf("2 – Mostrar todos os cadastros\n");
            printf("0 – Encerrar\n");
            
            i = i+1;
            
                     }
                         
            else
            printf("Sistema de cadastro lotado. Não é possível armazenar mais informações!\n");      
    
}

int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "Portuguese");
    
    printf("1 – Inserir um novo cadastro\n");
    printf("2 – Mostrar todos os cadastros\n");
    printf("0 – Encerrar\n");
    
    i = 0;
    opcao = 0;
do{
    
    while(!scanf ("%d", &opcao)) {
        while(getchar() != '\n');
        printf("Erro: opção inválida!\n");
    }
    
    if (opcao > 2)
    {printf("Erro: opção inválida!\n");
    }

  else
  switch(opcao)
  {
      case 1:
         
       cadastro();                
         break;
         
     case 2:
            
        mostrar();
        break;
               
 }
                    

}while(opcao != 0);

   return 0;    
 }

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#define const 5

typedef struct{
    int cod;
    char autordaobra[50];
    char obra[50];
    char editora[50];
}cadastro;

int i, j, cad, opcao, f1 = 0;
cadastro *livro[const];//1º - Criar Ponteiro

void mostrar(cadastro *livro){
    /*if(i != 0){
        for(j=0; j<i; j++){
            printf ("Código: %d\n", livro.cod);
            printf ("Autor da obra: %s\n",livro.autordaobra);
            printf ("Obra: %s\n", livro.obra);
            printf ("Editora: %s\n\n",livro.editora);
        }
    }
    else
        printf("Lista vazia!\n");*/

    system("cls");
    printf("\n");

    for(i=0; i<const; i++){
            printf ("Código: %d\n", livro[i].cod);
            printf ("Autor da obra: %s\n", livro[i].autordaobra);
            printf ("Obra: %s\n", livro[i].obra);
            printf ("Editora: %s\n\n",livro[i].editora);
    }
    printf("\n\n");
    system("pause");
    system("cls");
}

int cadastroo(cadastro *livro){//Mudar o nome da função.
    /*if(i <const){
        system("cls");
        printf("1 – Inserir um novo cadastro\n");
        printf("2 – Mostrar todos os cadastros\n");
        printf("0 – Encerrar\n");
        fflush(stdin);
        livro.cod = i+1;
        fflush(stdin);
        printf("Insira o nome do autor da obra %d:\n", i+1);
        fflush(stdin);
        gets(livro.autordaobra);
        fflush(stdin);
        printf("Insira o nome da obra %d:\n", i+1);
        gets(livro.obra);
        fflush(stdin);
        printf("Insira o nome da editora %d:\n", i+1);
        gets(livro.editora);
        fflush(stdin);
        system("cls");
        printf("1 – Inserir um novo cadastro\n");
        printf("2 – Mostrar todos os cadastros\n");
        printf("0 – Encerrar\n");

        i = i+1;
    }
    else
        printf("Sistema de cadastro lotado. Não é possível armazenar mais informações!\n");*/
    int i = 0, newbook, tem = 0, cont = 0, contMax = 0;

    for(i=0; i<const; i++){ //Livro zero significa que não tem livro, esse for verifica o livro e os livrpos ativos ate o valor chegar ao total do const.
        if(livro[i].cod != 0){
            contMax++;
        }
    }

    if(contMax == const){ //Aqui verifica se o sistema esta lotado.
        printf("\nSistema de cadastro lotado. Não é possível armazenar mais informações!\n");
        system("pause");
        system("cls");
    }
    else{
        do{
            fflush(stdin);
            printf("Insira o Cod. do livro %d: ", cont+1);
            scanf("%d", &newbook);
            tem = 0;

            for(i=0; i<const; i++){ //Este for verifica se o livro esta cadastrada, caso sim, muda a variavel tem para 1.
                if(newbook == livro[i].cod){
                    tem = 1;
                }
            }

            if(tem == 0){ //Caso a variavel tem esteja como zero, inicia o cadastro.
                livro[cont].cod = newbook;
                fflush(stdin);
                printf("Insira o nome do autor da obra %d: ", cont+1);
                scanf("%[^\n]s", &livro[cont].autordaobra);
                fflush(stdin);
                printf("Insira o nome da obra %d: ", cont+1);
                scanf("%[^\n]s", &livro[cont].obra);
                fflush(stdin);
                printf("Insira o nome da editora %d: ", cont+1);
                scanf("%[^\n]s", &livro[cont].editora);
                fflush(stdin);
                printf("\nLivro cadastrado com sucesso!\n");
                printf("\n");
                system("pause");
                system("cls");
            }
            else{ //Caso a variavel tem esjeja com o valor 1, cai aqui e diminui o contadador para que o do while seja iniciado novamente.
                cont = cont - 1;
                printf("\nJa existe livro cadastrado com este numero!!\n");
                system("pause");
            }
            cont++;
        }while(cont < const);
    }
    system("cls");
    return(livro[i].cod);
}

int main(int argc, char *argv[]){
    setlocale(LC_ALL, "Portuguese");
    /*printf("1 – Inserir um novo cadastro\n");
    printf("2 – Mostrar todos os cadastros\n");
    printf("0 – Encerrar\n");

    i = 0;
    opcao = 0;
    do{
        while(scanf ("%d", &opcao)){
            while(getchar() != '\n');
            printf("Erro: opção inválida!\n");
        }

        if(opcao > 2){
            printf("Erro: opção inválida!\n");
        }
        else
            switch(opcao){
                case 1:
                    cadastro();
                    break;

                case 2:
                    mostrar();
                    break;
            }
    }while(opcao != 0);
    return 0;*/

    //cadastro livro[const];

    /*for(i=0; i<const; i++){//zera a struct
        livro[i].cod = 0;
        strcpy(livro[i].autordaobra, "NULL");
        strcpy(livro[i].obra, "NULL");
        strcpy(livro[i].editora, "NULL");
    }*/

    do{
        printf("1 - Inserir um novo cadastro\n");
        printf("2 - Mostrar todos os cadastros\n");
        printf("0 - Encerrar L106\n");
        scanf("%i", &opcao);

        switch(opcao){
            case 1:
                system("cls || clear");
                f1 = cadastroo(livro);
                break;

            case 2:
                system("cls || clear");
                mostrar(livro);
                break;
                default:
                    system("cls || clear");
        }
    }while(opcao != 0);
    return 0;
}

 

Em 05/07/2019 em 03:42, lop3s disse:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>


#define const 5

struct cadastro{
    int cod;
    char autordaobra[50];
    char obra[50];
    char editora[50];
};

int i, j, cad, opcao;
struct cadastro livro[const]; >> aqui criou o vetor do struct

void mostrar() {

if(i != 0) {
        
                for(j=0; j<i; j++){    
                printf ("Código: %d\n", livro.cod);
                   printf ("Autor da obra: %s\n",livro.autordaobra);
                printf ("Obra: %s\n", livro.obra);
                printf ("Editora: %s\n\n",livro.editora);
                                  }
                           }
                           
                else
                printf("Lista vazia!\n");
}

void cadastro(){ >> no meu compilador ele não aceitou essa função com o mesmo nome da struct.
    
 if (i <const){
                    
            system("cls");
            printf("1 – Inserir um novo cadastro\n");
            printf("2 – Mostrar todos os cadastros\n");
            printf("0 – Encerrar\n");
            fflush(stdin);
            livro.cod = i+1; >> como você criou um vetor de struct faltou add o indice marcar a posição que esta sendo gravado.
            fflush(stdin);
            printf("Insira o nome do autor da obra %d:\n", i+1);
            fflush(stdin);
            gets(livro.autordaobra);
            fflush(stdin);
              printf("Insira o nome da obra %d:\n", i+1);
            gets(livro.obra);
            fflush(stdin);
            printf("Insira o nome da editora %d:\n", i+1);
            gets(livro.editora);
            fflush(stdin);
            system("cls");
            printf("1 – Inserir um novo cadastro\n");
            printf("2 – Mostrar todos os cadastros\n");
            printf("0 – Encerrar\n");
            
            i = i+1;
            
                     }
                         
            else
            printf("Sistema de cadastro lotado. Não é possível armazenar mais informações!\n");      
    
}

int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "Portuguese");
    
    printf("1 – Inserir um novo cadastro\n");
    printf("2 – Mostrar todos os cadastros\n");
    printf("0 – Encerrar\n");
    
    i = 0;
    opcao = 0;
do{
    
    while(!scanf ("%d", &opcao)) {
        while(getchar() != '\n');
        printf("Erro: opção inválida!\n");
    }
    
    if (opcao > 2)
    {printf("Erro: opção inválida!\n");
    }

  else
  switch(opcao)
  {
      case 1:
         
       cadastro();                
         break;
         
     case 2:
            
        mostrar();
        break;
               
 }
                    

}while(opcao != 0);

   return 0;    
 }

Meio que refatorei parte do código e preservei comentado o seu para que você possa analisar as modificações.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...