Erro ao imprimir membro de struct: request for member in something not a structure or union

Question:

I have the following struct :

typedef struct{
    int Numerador ;
    int Denominador ;
} TNumeroRacional ;

In this function I ask the user to enter 2 numerators and denominators to form 2 rational numbers.

void Atribuir (TNumeroRacional* num,TNumeroRacional* num2,int Numerador,int Denominador){
 printf(" a: Atribuir valores para os campos.\n");
 printf("Primeiro numero racional:");
 printf(" Por favor, insira os valores: \n Numerador: ");
 scanf("%d",&num->Numerador);
 printf(" Denominador: ");
 scanf("%d",&num->Denominador);
 printf("Segundo numero racional:");
 printf(" Por favor, insira os valores: \n Numerador: ");
 scanf("%d",&num2->Numerador);
 printf(" Denominador: ");
 scanf("%d",&num2->Denominador);
 printf("Numero racional 1: %d/%d \n",num.Numerador,num.Denominador);
}

When I try to print any element, it appears:

error: request for member 'Numerador' in something not a structure or union
error: request for member 'Denominador' in something not a structure or union

I don't know if my error is in the assignment, but the error message only appears on the printf line.

Answer:

This problem I didn't see happen but it could be because the problem is in the call and this was not mentioned in the question, there was another error that I fixed in the final printf() :

#include <stdio.h>

typedef struct {
    int Numerador;
    int Denominador;
} TNumeroRacional;

void Atribuir(TNumeroRacional *num, TNumeroRacional *num2, int numerador, int denominador) {
    printf(" a: Atribuir valores para os campos.\n");
    printf("Primeiro numero racional:");
    printf(" Por favor, insira os valores: \n Numerador: ");
    scanf("%d", &num->Numerador);
    printf(" Denominador: ");
    scanf("%d", &num->Denominador);
    printf("Segundo numero racional:");
    printf(" Por favor, insira os valores: \n Numerador: ");
    scanf("%d", &num2->Numerador);
    printf(" Denominador: ");
    scanf("%d", &num2->Denominador);
    printf("Numero racional 1: %d/%d \n", num->Numerador, num->Denominador);
}

int main(void) {
    int numerador = 0, denominador = 0;
    TNumeroRacional num, num2;
    Atribuir(&num, &num2, numerador, denominador);
}

See working on ideone . And on repl.it. Also posted on GitHub for future reference .

Scroll to Top
AllEscort