Linguagem em C.
* Crie uma struct pessoa que contenha id, nome e cpf. Crie uma função que recebe os dados da pessoa e retorne a mesma criada, lembrando que dados como nome deve ter o seu tamanho alocado dinamicamente. No main faça o teste criando duas pessoas e imprima para verificar se está funcionando corretamente.
Soluções para a tarefa
Respondido por
3
Boa noite!
/* Crie uma struct pessoa que contenha: id, nome e cpf.
Crie uma função que recebe os dados da pessoa e retorne a mesma criada, lembrando que dados como nome deve ter o seu tamanho alocado dinamicamente. No main faça o teste criando duas pessoas e imprima para verificar se está funcionando corretamente.*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct pessoa {
int id;
char* nome;
char cpf[12];
};
struct pessoa * dados_pessoa(int id, char nome[], char cpf[]);
int main(void) {
int id;
char nome[50];
char cpf[12];
struct pessoa *p1;
struct pessoa *p2;
/* Primeira pessoa */
printf("Dados da primeira pessoa:\n");
printf("Entre com a id da pessoa: ");
scanf("%d", &id);
printf("Entre com o nome da pessoa: ");
scanf(" %s", nome);
printf("Entre com o CPF (sem pontos nem traço): ");
scanf(" %s", cpf);
/* Criando a variável p1 */
p1 = dados_pessoa(id, nome, cpf);
/* Segunda pessoa */
printf("Dados da segunda pessoa:\n");
printf("Entre com a id da pessoa: ");
scanf("%d", &id);
printf("Entre com o nome da pessoa: ");
scanf(" %s", nome);
printf("Entre com o CPF (sem pontos nem traço): ");
scanf(" %s", cpf);
/* Criando a variável p2 */
p2 = dados_pessoa(id, nome, cpf);
/* Testando */
printf("Primeira pessoa: id: %d, Nome: %s, CPF: %s\n", p1->id, p1->nome, p1->cpf); printf("Segunda pessoa: id: %d, Nome: %s, CPF: %s\n", p2->id, p2->nome, p2->cpf);
free(p1->nome); free(p1);
free(p2->nome); free(p2);
return 0;
}
struct pessoa * dados_pessoa(int id, char nome[], char cpf[]) {
struct pessoa * p;
p = (struct pessoa *)malloc(sizeof(struct pessoa));
p->nome = (char *)malloc(sizeof(char)*strlen(nome)+1);
p->id = id;
strcpy(p->nome, nome);
strcpy(p->cpf, cpf);
return p;
}
Solução em https://repl.it/NuzX/16
Espero ter ajudado!
/* Crie uma struct pessoa que contenha: id, nome e cpf.
Crie uma função que recebe os dados da pessoa e retorne a mesma criada, lembrando que dados como nome deve ter o seu tamanho alocado dinamicamente. No main faça o teste criando duas pessoas e imprima para verificar se está funcionando corretamente.*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct pessoa {
int id;
char* nome;
char cpf[12];
};
struct pessoa * dados_pessoa(int id, char nome[], char cpf[]);
int main(void) {
int id;
char nome[50];
char cpf[12];
struct pessoa *p1;
struct pessoa *p2;
/* Primeira pessoa */
printf("Dados da primeira pessoa:\n");
printf("Entre com a id da pessoa: ");
scanf("%d", &id);
printf("Entre com o nome da pessoa: ");
scanf(" %s", nome);
printf("Entre com o CPF (sem pontos nem traço): ");
scanf(" %s", cpf);
/* Criando a variável p1 */
p1 = dados_pessoa(id, nome, cpf);
/* Segunda pessoa */
printf("Dados da segunda pessoa:\n");
printf("Entre com a id da pessoa: ");
scanf("%d", &id);
printf("Entre com o nome da pessoa: ");
scanf(" %s", nome);
printf("Entre com o CPF (sem pontos nem traço): ");
scanf(" %s", cpf);
/* Criando a variável p2 */
p2 = dados_pessoa(id, nome, cpf);
/* Testando */
printf("Primeira pessoa: id: %d, Nome: %s, CPF: %s\n", p1->id, p1->nome, p1->cpf); printf("Segunda pessoa: id: %d, Nome: %s, CPF: %s\n", p2->id, p2->nome, p2->cpf);
free(p1->nome); free(p1);
free(p2->nome); free(p2);
return 0;
}
struct pessoa * dados_pessoa(int id, char nome[], char cpf[]) {
struct pessoa * p;
p = (struct pessoa *)malloc(sizeof(struct pessoa));
p->nome = (char *)malloc(sizeof(char)*strlen(nome)+1);
p->id = id;
strcpy(p->nome, nome);
strcpy(p->cpf, cpf);
return p;
}
Solução em https://repl.it/NuzX/16
Espero ter ajudado!
bokomoko:
Muito bom ! Parabens, belo código e parabens pela manha que resolveu o lance da alocação dinãmica do "nome"
Perguntas interessantes
Matemática,
9 meses atrás
Matemática,
1 ano atrás
História,
1 ano atrás
Administração,
1 ano atrás
Matemática,
1 ano atrás