Ir ao conteúdo
  • Cadastre-se
rs.fran

Ajuda com argumento %d em C: erro de compilação

Recommended Posts

Olá galera.

Já de antemão peço desculpas se postei em lugar errado ou algo do tipo, sou nova aqui.

No mais, sou iniciante em C e estou desenvolvendo um sistema de cadastro de compromissos (espécie de agenda eletrônica) para um trabalho da faculdade, e um trecho do meu código está assim:

typedef struct compromisso_s {

int dia, mes, ano, duracao, tipo, status, adiavel, id, prioridade;

char nome [100];

} compromisso;

void inicializaCompromisso(compromisso *c);

void inicializaCompromisso(compromisso *c){

c->id++;

printf("Por favor, digite o tipo de compromisso a ser cadastrado. (Escolha um numero: 1-Aula, 2-Orientacao, 3-Reuniao, 4-Evento ou 5-Compromisso particular.");

scanf("%d", c->tipo);

Só que ao compilar, o IDE Geany retorna a seguinte mensagem:

tp1.c:19:2: aviso: formato ‘%d’ espera argumento do tipo ‘int *’, porém o argumento 2 possui tipo ‘int’ [-Wformat].

A linha que acusa o erro é a "scanf("%d", c->tipo);"

Alguém poderia me ajudar, por favor? Obrigada ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites
Sem o programa completo fica difícil de ver.

Por enquanto só fiz as funções... Como sou iniciante (mais sujeita a erros), vou compilando aos poucos para conferir.. Acho que o problema está quando eu indico %d e passo c->"alguma coisa". O engraçado é que eu estava a programar no Windows e esse erro não aparecia. Aí ontem instalei o UBuntu e o Geany acusa esse erro.

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

typedef struct compromisso_s {

int dia, mes, ano, duracao, tipo, status, adiavel, id, prioridade;

char nome [100];

} compromisso;

void inicializaCompromisso(compromisso *c);

void alteraPrioridade (compromisso *c);

void mostraTipo_compromisso (compromisso *c);

void mostraStatus (compromisso *c);

void alteraPrioridade (compromisso *c);

void inicializaCompromisso(compromisso *c){

c->id++;

printf("Por favor, digite o tipo de compromisso a ser cadastrado. (Escolha um numero: 1-Aula, 2-Orientacao, 3-Reuniao, 4-Evento ou 5-Compromisso particular.");

scanf("%d", c->tipo);

while ((c->tipo != 1) || (c->tipo != 2) || (c->tipo != 3) || (c->tipo != 4) || (c->tipo != 5)){

printf("Desculpe, mas o tipo de compromisso digitado nao e valido. Por favor, escolha um numero: 1-Aula, 2-Orientacao, 3-Reuniao, 4-Evento ou 5-Compromisso particular.");

scanf("%d", c->tipo);

}

printf("Digite um nome para identificar seu compromisso");

scanf("%s", c->nome);

printf("Agora digite a data de seu compromisso no formato dd/mm/aaaa");

scanf("%d/%d/%d", c->dia, c->mes, c->ano);

if (c->tipo == 4){

printf("Digite a duracao de seu compromisso em dias");

scanf("%d",c->duracao);

}

else{

printf("Digite a duracao de seu compromisso em minutos");

scanf("%d", c->duracao);

}

switch(c->tipo){

case '1':

c->prioridade = 2;

break;

case '2':

c->prioridade = 1;

break;

case '3':

c->prioridade = 4;

break;

case '4':

c->prioridade = 3;

break;

case '5':

c->prioridade = 2;

break;

}

c->status=1;

c->adiavel=0;

}

O geany acusa esse mesmo erro em todas as linhas "scanf" do tipo inteiro, tp1.c:19:2: aviso: formato ‘%d’ espera argumento do tipo ‘int *’, porém o argumento 2 possui tipo ‘int’ [-Wformat]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×