I'm having a problem in the last procedure of the following code, where the procedure receiveString to make the comparison with another one is being ignored and jumping straight to receiveEndereco.
Could someone tell me why and how to solve it?
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct enderecoStruct
{
char rua[40];
char bairro[30];
int numero;
char cep[8];
char cidade[20];
char estado[20];
} Endereco;
typedef struct CadastroPessoaStruct
{
char nome[40];
char reg[13];
char rg[10];
char telefone[11];
Endereco end;
} Pessoa;
Pessoa *clientes;
int qtdClientes, tamClientes;
void removerQuebraLinha(char *string)
{
if(string != NULL && strlen(string) > 0)
{
short tamanho = strlen(string);
if(string[tamanho-1] == '\n')
{
string[tamanho-1] = '#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct enderecoStruct
{
char rua[40];
char bairro[30];
int numero;
char cep[8];
char cidade[20];
char estado[20];
} Endereco;
typedef struct CadastroPessoaStruct
{
char nome[40];
char reg[13];
char rg[10];
char telefone[11];
Endereco end;
} Pessoa;
Pessoa *clientes;
int qtdClientes, tamClientes;
void removerQuebraLinha(char *string)
{
if(string != NULL && strlen(string) > 0)
{
short tamanho = strlen(string);
if(string[tamanho-1] == '\n')
{
string[tamanho-1] = '%pre%';
}
}
}
void receberString(char *string_destino, int quantidade_caracteres)
{
fgets(string_destino, quantidade_caracteres, stdin);
removerQuebraLinha(string_destino);
}
Pessoa receberCliente()
{
Pessoa p;
printf("Nome: ");
receberString(p.nome, 39);
printf ("CPF: ");
receberString(p.reg, 13);
fflush(stdin);
printf ("RG: ");
receberString(p.rg, 11);
fflush(stdin);
printf ("Telefone: ");
receberString(p.telefone, 12);
fflush(stdin);
p.end = receberEndereco();
system("cls");
sucesso();
return p;
}
Endereco receberEndereco()
{
Endereco e;
printf ("Rua: ");
receberString(e.rua, 39);
fflush(stdin);
printf ("Numero: ");
scanf("%5d", &e.numero);
fflush(stdin);
printf ("CEP: ");
receberString(e.cep, 9);
fflush(stdin);
printf ("Bairro: ");
receberString(e.bairro, 29);
printf ("Cidade: ");
receberString(e.cidade, 20);
printf ("Estado: ");
receberString(e.estado, 20);
system("cls");
sucesso();
return e;
}
void inserirCliente(Pessoa p)
{
if(qtdClientes == tamClientes)
{
tamClientes *= 1.5;
clientes = realloc(clientes, tamClientes*sizeof(Pessoa));
}
clientes[qtdClientes] = p;
qtdClientes++;
}
Pessoa *buscarCliente(char *cpf)
{
Pessoa *p = NULL;
int i;
for (i=0; i < qtdClientes; i++)
{
if(strcmp(clientes[i].reg, cpf) == 0)
{
p = &clientes[i];
break;
}
}
return p;
}
int main(int argc, char** argv)
{
char cpf[13];
printf("Digite os dados do cliente: ");
inserirCliente(receberCliente);
printf("CPF do cliente cadastrado");
receberString(cpf, 13);
(buscarCliente(cpf);
return 0;
}
';
}
}
}
void receberString(char *string_destino, int quantidade_caracteres)
{
fgets(string_destino, quantidade_caracteres, stdin);
removerQuebraLinha(string_destino);
}
Pessoa receberCliente()
{
Pessoa p;
printf("Nome: ");
receberString(p.nome, 39);
printf ("CPF: ");
receberString(p.reg, 13);
fflush(stdin);
printf ("RG: ");
receberString(p.rg, 11);
fflush(stdin);
printf ("Telefone: ");
receberString(p.telefone, 12);
fflush(stdin);
p.end = receberEndereco();
system("cls");
sucesso();
return p;
}
Endereco receberEndereco()
{
Endereco e;
printf ("Rua: ");
receberString(e.rua, 39);
fflush(stdin);
printf ("Numero: ");
scanf("%5d", &e.numero);
fflush(stdin);
printf ("CEP: ");
receberString(e.cep, 9);
fflush(stdin);
printf ("Bairro: ");
receberString(e.bairro, 29);
printf ("Cidade: ");
receberString(e.cidade, 20);
printf ("Estado: ");
receberString(e.estado, 20);
system("cls");
sucesso();
return e;
}
void inserirCliente(Pessoa p)
{
if(qtdClientes == tamClientes)
{
tamClientes *= 1.5;
clientes = realloc(clientes, tamClientes*sizeof(Pessoa));
}
clientes[qtdClientes] = p;
qtdClientes++;
}
Pessoa *buscarCliente(char *cpf)
{
Pessoa *p = NULL;
int i;
for (i=0; i < qtdClientes; i++)
{
if(strcmp(clientes[i].reg, cpf) == 0)
{
p = &clientes[i];
break;
}
}
return p;
}
int main(int argc, char** argv)
{
char cpf[13];
printf("Digite os dados do cliente: ");
inserirCliente(receberCliente);
printf("CPF do cliente cadastrado");
receberString(cpf, 13);
(buscarCliente(cpf);
return 0;
}