How to pass string to struct within the function

Asked

Viewed 24 times

-1

Hi, I have to do a CRUD in C, but I have a problem, I have to pass 3 strings to a function but I have no idea how to do, I’ve tried everything...

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>

typedef struct dados
{
    int id;
    char phone[50];
    char fname[20];
    char lname[20];
    int dia, mes, ano;
} tDados;

void cadastrar(tDados *dados, int *cont, int id, char *fname, char *lname, int dia, int mes, int ano, char *phone);

int main()
{
    setlocale(LC_ALL, "Portuguese");
    char opcao[5];
    int id, dia, mes, ano, cont = 0;
    char fname[20], lname[20], phone[50];
    tDados pessoa[20];
    
    fflush(stdin);
    printf("Comando: ");
    scanf("%s %d %s %s %d/%d/%d %s", &opcao, &id, &fname, &lname, &dia, &mes, &ano, &phone);
    
    if(strcmp(opcao, "add") == 0)
    {
        cadastrar(&pessoa, &cont, id, &fname, &lname, dia, mes, ano, &phone);
        printf("%d\n%s\n%s\n%d/%d/%d\n%s", pessoa[cont].id, pessoa[cont].fname, pessoa[cont].lname, pessoa[cont].dia, pessoa[cont].mes, pessoa[cont].ano, pessoa[cont].phone);
    }
}

void cadastrar(tDados *dados, int *cont, int id, char *fname, char *lname, int dia, int mes, int ano, char *phone)
{
    int j = strlen(*(phone));

    dados[*(cont)+1].id = id;
    dados[*(cont)+1].dia = dia;
    dados[*(cont)+1].mes = mes;
    dados[*(cont)+1].ano = ano;
 
    *(dados[*(cont)+1].fname) = fname;
    *(dados[*(cont)+1].lname) = lname;
    *(dados[*(cont)+1].phone) = phone;

    *cont += 1;
}

1 answer

0

I did, instead of using

    *(dados[*(cont)+1].fname) = fname;
    *(dados[*(cont)+1].lname) = lname;
    *(dados[*(cont)+1].phone) = phone;

I used

    strcpy(dados[*(cont)+1].fname, fname);
    strcpy(dados[*(cont)+1].lname, lname);
    strcpy(dados[*(cont)+1].phone, phone);

Browser other questions tagged

You are not signed in. Login or sign up in order to post.