Ir ao conteúdo
  • Cadastre-se

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


rs.fran

Posts recomendados

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 ^_^

Link para o comentário
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]

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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!