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

Dúvida c/ String e struct


Guest --Evaldo --

Pergunta

Guest --Evaldo --

Assumindo que p contenha valores válidos e 'C' é o próprio valor que quero comparar, gostaria de saber como

faço para copiar esse valor p/ p->tipo_mov e como compará-los, já que pelo seguinte processo não consigo

obter êxito. Alguém poderia solucionar isso?

Segue o código:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

struct tipo{

char nome[40], tipo_mov[1], data[10];

int numero, valor, depos;

struct tipo *esq;

struct tipo *dir;

};

void main(void){

struct tipo *p;

strcpy(p->tipo_mov, 'C');

if(strcmp(p->tipo_mov, 'C'))

p->valor+=10;

else

p->valor-=10;

printf("Tipo: %s\nValor %d\n", p->tipo_mov, p->valor);

}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Antes de tudo, não utilize void no main. Utilize int.

tipo::tipo_mov só irá conter um caractere, então você não precisa especificar isso. Utilize somente char tipo_mov.

Então, como só irá conter um caractere, não precisará das funções strcpy e strcmp. Retire o header "string.h".

Também não há necessidade da "stdlib.h", retire-a.

A struct está sendo declarada erroneamente. Você precisa de um typedef com o nome depois da estrutura dela.

Outra coisa é que você estava esquecendo de inicializar a variável p.valor.

Uma última consideração:

struct tipo *esq;
struct tipo *dir;
Aqui você está colocando a própria struct na struct? Não entendi isso. O código, arrumado: (Acrescentei comentários e uma estilização minha)
#include <stdio.h>

// Define a struct
typedef struct {
    char nome[40],
         tipo_mov,
         data[10];

    int numero,
        valor,
        depos;
} tipo;

int main(void) {
    // Declara as variáveis
    tipo p;
    
    // Inicializa as variáveis
    p.valor = 0;
    p.tipo_mov = 'C';

    // Verifica qual é o valor de p.tipo_mov, caso for igual à C, incrementa o p.valor por 10, do contrário decrementa
    if(p.tipo_mov == 'C')
        p.valor += 10;
    else
        p.valor -= 10;

    // Imprime no stdin os "resultados"
    printf("Tipo: %c\nValor: %d\n", p.tipo_mov, p.valor);
    return 0;
}

Abraços

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,2k
    • Posts
      652k
×
×
  • Criar Novo...