Я пытаюсь создать программу почти как «банк» с использованием структуры, но когда программа должна прочитать строку (переменная «nome», которая является именем на португальском языке) полностью игнорирует «fgets», который я использовал , Это та часть, что я говорил о:Почему я не могу использовать «fgets» для чтения строки для элемента моего Struct?
printf("\nNome: \n");
fgets(vet[cont+1].nome, sizeof(vet[cont+1].nome), stdin);
И я уверен, что может быть, проблема с выделением динамически моего массива объектов. Пожалуйста, помогите с этой проблемой, спасибо!
PS: Извините, но код находится на португальском (мой родной язык).
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
/*
Programa realiza uma alocacao dinamica por meio
de uma funcao que recebe a dimensao e retorna o vetor(ponteiro)
*/
struct CLIENTES
{
int ano_nasc, cpf[11];
float renda_m;
char nome[50];
}; //Lista de Objetos
int main(void)
{
//Declaracao de Variaveis
int cont=0, num, num_2, client, i, j;
CLIENTES *vet;
//Leitura de Dados
printf("Digite o numero de Clientes: ");
scanf("%d", &num);
vet = (CLIENTES*)malloc(num*sizeof(int));
printf("Digite os Dados do Cliente.");
while (cont != num)
{
printf("\nNome: \n");
fgets(vet[cont+1].nome, sizeof(vet[cont+1].nome), stdin);
printf("\nAno de Nascimento: ");
scanf("%d", &vet[cont+1].ano_nasc);
printf("\nCPF: ");
scanf("%d", &vet[cont+1].cpf);
printf("\nRenda Mensal: ");
scanf("%d", &vet[cont+1].renda_m);
cont++;
}
printf("\nDigite o numero do cliente que voce deseja conferir: ");
scanf("%d", &num_2);
for (i=0;i<num;i++)
{
if(num_2 == num)
{
printf("\nO que deseja saber sobre ele?\n");
printf("1-Nome\n2-Ano de Nascimento\n3-CPF\n4-Renda Mensal\n\n\n");
scanf("%d", &client);
if (client == 1)
{
printf("Nome: %c", vet[num_2].nome);
}
else if(client == 2)
{
printf("Ano de Nascimento: %d", vet[num_2].ano_nasc);
}
else if(client == 3)
{
for(j=0;j<11;j++)
{
printf("CPF: %d", vet[num_2].cpf[j]);
}
}
else if(client == 4)
{
printf("Renda Mensal: %f", vet[num_2].renda_m);
}
}
}
//Finalizando o Programa
printf("\n\nFim do Programa!");
getch();
return 0;
}
Почему вы таНос (Num * SizeOf (INT))? Каждый элемент - sizeof (struct CLIENTES), а не sizeof (int). – jarmod
'vet = (CLIENTES *) malloc (num * sizeof (int));' должен быть таким, как 'vet = (CLIENTES *) malloc (num * sizeof (* vet));' и 'fgets (vet [cont + 1] .nome, sizeof (vet [cont + 1] .nome), stdin); 'remove' + 1'. – BLUEPIXY
Спасибо, ребята, за помощь, но я сделал все изменения, и программа все еще не может читать мои фэки. –