Ir ao conteúdo
  • Cadastre-se
Ledfullhd

Duvida com trabalho, gravar caracteres da string

Recommended Posts

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

 

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

usei o fgets e o dev me retornou o seguinte erro

 

[Error] too few arguments to function 'char* fgets(char*, int, FILE*)'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora asiim que termina de cadastrar o nome ele pula para outras opções aleatorias e grava so a partir do 3º caractere da ultima opcao, a mesma coisa em todas outras

Compartilhar este post


Link para o post
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;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×