Ir ao conteúdo
  • Cadastre-se

Duvida com trabalho, gravar caracteres da string


Ledfullhd

Posts recomendados

Estou fazendo um trabalho da faculdade de software de padaria , no menu onde cadastro os clientes consegui fazer certo, so que quando ele grava, ele so grava o ultimo campo que digitei em todos os campos, alguem poderia me ajudar?

 

Codigo

 

//Declarando variaveis menu clientes
int i=0;//cadastro
int j=0;//
      
int opcaoMenuClientes;
char voltarMenuClientes;//sai de relatorios e cadastro de clientes e vai ao MENU DE CLIENTES
char Cadastro[5][100],nome[0][100],telefone[0][100],rua[0][100],bairro[0][100],numeroCASA[0][100];
 
 
 
// opção CADASTRO DE CLIENTES (opção DE MENU CLIENTES = 1):
if(opcaoMenuClientes == 1)
{
do{
system("cls");
printf("\n\t\tMENU DE CLIENTES/ Cadastro de clientes\n\n");
 
printf("\n\n\n\t NOME: ");
gets(nome);
printf("\n\t TELEFONE: ");
gets(telefone);
printf("\n\t RUA: ");
gets(rua);
printf("\n\t BAIRRO: ");
gets(bairro);
printf("\n\t NUMERO DA CASA: ");
gets(numeroCASA);
fflush(stdin);
                        
printf("\n\n\n\t NOME: %s",nome);
printf("\n\n\n\t TELEFONE: %s",telefone);
printf("\n\n\n\t RUA: %s",rua);
printf("\n\n\n\t BAIRRO: %s",bairro);
fflush(stdin);
printf("\n\n\n\t NUMERO DA CASA: %s",numeroCASA);
printf("\n\n\n\n\n\n\n\n\n\n\n\n\t\tCLIENTE CADASTRADO COM SUCESSO!!!");
printf("\n\n\n\n\t\t\Deseja cadastrar mais clientes? (n = nao / s = sim)\n\n\t\tOpcao: ");
scanf("%c",&voltarMenuClientes);
fflush(stdin);
i++;
if(voltarMenuClientes == 'n' || voltarMenuClientes == 'N')
{
  break;
}
if(voltarMenuClientes  == 's' || voltarMenuClientes == 'S')
{
                       
}
}while(opcaoMenuClientes!=3);//sai (FECHANDO O do)
}//Fechando o IF

 

Link para o comentário
Compartilhar em outros sites

Não use gets. Há o problema de buffer overflow (a função foi dada como obsoleta no ISO C99 e removida no ISO C11).
Também não use fflush na entrada padrão (comportamento indefinido). Prefira fgets (que já que captura o \n da entrada) ou use %*c no scanf p/ ignorar esse \n.

Explique porquê você declara um array de tamanho zero:

 

 

cadastro.c:6:24: warning: ISO C forbids zero-size array ‘nome’ [-Wpedantic]

  char cadastro[5][100],nome[0][100],telefone[0][100],rua[0][100],bairro[0][100],numeroCASA[0][100];
                        ^
cadastro.c:6:37: warning: ISO C forbids zero-size array ‘telefone’ [-Wpedantic]
  char cadastro[5][100],nome[0][100],telefone[0][100],rua[0][100],bairro[0][100],numeroCASA[0][100];
                                     ^
cadastro.c:6:54: warning: ISO C forbids zero-size array ‘rua’ [-Wpedantic]
  char cadastro[5][100],nome[0][100],telefone[0][100],rua[0][100],bairro[0][100],numeroCASA[0][100];
                                                      ^
cadastro.c:6:66: warning: ISO C forbids zero-size array ‘bairro’ [-Wpedantic]
  char cadastro[5][100],nome[0][100],telefone[0][100],rua[0][100],bairro[0][100],numeroCASA[0][100];
                                                                  ^
cadastro.c:6:81: warning: ISO C forbids zero-size array ‘numeroCASA’ [-Wpedantic]
  char cadastro[5][100],nome[0][100],telefone[0][100],rua[0][100],bairro[0][100],numeroCASA[0][100];
                                                                                 ^
 
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

... Você precisa reescrever o código. Não é só sair substituindo funções.

 

#include <stdio.h>#include <string.h>#define MAX_CLIENTES 4#define MAX_NOME 100#define MAX_ENDERECO 200#define MAX_DIGITOS_TELEFONE 8enum _op{CADASTRO, LISTAR, SAIR};int main(void) {	char nome[MAX_CLIENTES][MAX_NOME+1];	char telefone[MAX_CLIENTES][MAX_DIGITOS_TELEFONE+1];	char endereco[MAX_CLIENTES][MAX_ENDERECO+1];	int tamanho_cadastro = 0;	int opcao = -1;	while (opcao != SAIR) {		/* Faça o código de exibição de menu e leitura aqui. */		scanf("%d%*c", &opcao);		if (opcao == CADASTRO) {			puts("*** @CLIENTES\\Cadastro ***");			if (tamanho_cadastro == MAX_CLIENTES) {				puts("O cadastro está cheio.");			} else {				printf("Informe o nome: ");				fgets(nome[tamanho_cadastro], MAX_NOME, stdin);				printf("Informe o telefone: ");				fgets(telefone[tamanho_cadastro], MAX_DIGITOS_TELEFONE, stdin);				printf("Informe o endereço completo: ");				fgets(endereco[tamanho_cadastro], MAX_ENDERECO, stdin);				// Remover \n no final.				nome[tamanho_cadastro][strlen(nome[tamanho_cadastro])-1] = '\0';				telefone[tamanho_cadastro][strlen(telefone[tamanho_cadastro])-1] = '\0';				endereco[tamanho_cadastro][strlen(endereco[tamanho_cadastro])-1] = '\0';				tamanho_cadastro++;			}		} else if (opcao == LISTAR) {			if (!tamanho_cadastro) {				puts("Não há nenhum cliente cadastrado.");			} else {				puts("*** @CLIETNES\\Listagem ***");				for(int i=0; i<tamanho_cadastro; i++) {					puts("----------------------------");					printf("Nome: %s\n", nome[i]);					printf("Telefone: %s\n", telefone[i]);					printf("Endereço: %s\n", endereco[i]);					puts("----------------------------");				}			}		}	}	return 0;}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!