Ir ao conteúdo
  • Cadastre-se

wurilo

Membro Júnior
  • Posts

    6
  • Cadastrado em

  • Última visita

posts postados por wurilo

  1.  

    Ok,

    Observe

    typedef struct dadosPessoais         {        char nome = ' ';        int telefone = -1;    }DadosPessoais; 
    printf("Digite nome: \n");    scanf(" %s", &vetor->nome);

    Estranho isso ter copilado, observe se não de copilação;

    Outrora se ainda assim rodou

    Na declaração scanf(" %s", &vetor->nome); o sistema vai gravar muito bytes em um local reservado com 1 byte

    isso não funciona e C; em C++ acredito que também não;

    Mesmo que funcione você esta invadindo a memoria overflow ;na maioria dos casos resulta em erro fatal;

     

    declare assim:

    char nome[15]; // No máximo 14 letras;

     

     

    Ok,

    Observe

    typedef struct dadosPessoais         {        char nome = ' ';        int telefone = -1;    }DadosPessoais; 
    printf("Digite nome: \n");    scanf(" %s", &vetor->nome);

    Estranho isso ter copilado, observe se não de copilação;

    Outrora se ainda assim rodou

    Na declaração scanf(" %s", &vetor->nome); o sistema vai gravar muito bytes em um local reservado com 1 byte

    isso não funciona e C; em C++ acredito que também não;

    Mesmo que funcione você esta invadindo a memoria overflow ;na maioria dos casos resulta em erro fatal;

     

    declare assim:

    char nome[15]; // No máximo 14 letras;

     

    Boa noite Mauro,

     

    Muito obrigado por me ajudar, porém como saberei após realizar esta alteração se há índices vagos no vetor?

  2. Boa noite Pessoal.


    Estou com problemas em um código em C, tenho q pegar dados (nome e telefone) de algumas pessoas em uma Struct, depois armazena-las em um vetor, tudo isso por uma função/procedimento, abaixo segue meu código, porém na hora de imprimir sai uns caracteres estranhos. Se puderem me ajudar agradeceria muito.


    Estou usando a plataforma DEV C++



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

    #define MAX 2

    typedef struct dadosPessoais
    {
    char nome = ' ';
    int telefone = -1;
    }DadosPessoais;

    void inserir(DadosPessoais *vetor);
    void listar(DadosPessoais *vetor);

    int main()
    {

    int escolha=1;
    DadosPessoais vetor[MAX];

    // se a escolha for diferente de 3, ele continua... o que inicialmente é verdade
    // pois escolha é igual a 1

    while (escolha!=5)
    {

    printf("\n\n ----------------------- ");

    printf("\n 1 - Inserir novo registro ");
    printf("\n 2 - Limpar registros da tabela ");
    printf("\n 3 - Fechar Programa ");
    printf("\n\n Escolha uma opcao: ");
    scanf("%d",&escolha);


    // estrutura switch
    switch (escolha)
    {

    case 1:
    {
    system ("cls");
    inserir(vetor);
    break;
    }

    case 2:
    {
    system ("cls");
    listar(vetor);
    break;
    }

    // opção padrão
    default:
    {
    system ("cls");

    // se for escolhida a opção 3, ele pula o while utilizando continue para isso
    if( escolha==3)
    {
    continue;
    }
    // caso o usuário digite um numero acima de 5, ele irá informar que nao existe essa opção
    printf("\n\n Nenhuma opcao foi escolhida ");
    break;
    }
    }

    }
    if( escolha==3)
    printf("\n\n O Programa foi fechado");

    system("PAUSE");

    }

    void inserir(DadosPessoais *vetor)
    {
    int x=3, i, espaco ;

    for(i=0; i<x; i++)
    {
    if (vetor[i].nome == ' ')
    {
    espaco = 1;
    break;
    }
    else
    {
    espaco = 2;
    }

    }

    if (espaco == 1)
    {
    printf("Digite nome: \n");
    scanf(" %s", &vetor->nome);

    printf("Digite o telefone: \n ");
    scanf(" %d", &vetor->telefone);
    }
    else
    {
    printf("Nao ha espaco vago \n ");
    }
    }

    void listar(DadosPessoais *vetor)
    {
    int x=MAX, i, espaco ;

    for(i=0; i<x; i++)
    {
    if (vetor[i].nome != ' ')
    {
    printf(" %c", &vetor[x].nome);
    printf("\n");
    printf(" %c", &vetor[x].telefone);
    printf("\n");
    }
    else
    {
    printf("Vetor vazio");
    }
    }



Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!