Ir ao conteúdo

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


rs.fran

Posts recomendados

Postado

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

Postado
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]

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!