sou novato na linguagem C e estou com dois problemas pra criar um programa
tenho que fazer uma lista para cadastrar nome e telefone de usuarios, e criar rotinas para cadastro de usuario, remoção de usuario, listagem e busca por usuario.
o primeiro problema está quando solicito ao usuario o nome e telefone a ser cadastrado, atraves desse codigo
case 1:
if (cheia(list)) printf("ERRO! Lista cheia. Impossivel inserir.");
else {
char sujeito[50];
char fone[15];
printf("\nDigite o nome a ser cadastrado: ");
gets (sujeito);
printf("\n");
printf("\nDigite o telefone: ");
gets (fone);
printf("\n");
Cadastro(&list, *sujeito, *fone);
printf("Insercao realizada com sucesso!\n");
}
break;
rotina de cadastro que é chamada:
void Cadastro(Tlista*lista, char sujeito, char fone)
{
int p;
p = lista->dispo; //dispo é a posição disponivel
lista->dispo = lista->l[lista->dispo].prox; // prox é o proxima posição
lista->l[p].prox = lista->prim; // prim é a posição q inicia a lista
lista->prim = p;
strcpy(lista->l[p].nome, &sujeito); // copiando o nome q usuario digitou para a lista
strcpy(lista->l[p].tel, &fone); //copiando o telefone que o usuario digitou para a lista
}
porem ao executar, na tela aparece:
Digite o nome a ser cadastrado:
Digite o telefone:
*o problema é que o cursor para apos a palavra telefone, ignorando o cadastro do nome e pulando para linha de baixo esperando o usuario cadastrar o telefone, o que pode ser isso?
_____________
o segundo problema esta na listagem,
quando o usuario escolhe a opçao de listagem.
o programa deveria apresentar o nome e telefone de todos os usuarios cadastrados, porém o programa apenas apresenta o primeiro caracter do telefone, a rotina de listagem do codigo é a seguinte:
void imprimeLista(Tlista lista)//ARRUMAR OS 20 DE CADA VEZ
//Rotina para impressao da lista na tela
//Parametro de entrada: a lista a ser impressa
//Parametro de saida: inexistente
//Retorno: inexistente - funcao void
{
int p; //Variavel auxiliar que percorre a lista para imprimir as informacoes
int cont = 0;
p = lista.prim; //A partir do primeiro elemento...
while ((p != -1){ //Enquanto não encontra o final da lista...
printf("%s", lista.l[p].nome);//Imprime nome e telefone
printf("%s", lista.l[p].tel);
p = lista.l[p].prox; //Salta para o proximo no
} //Fim do while(p != -1)
}
Por exemplo se o usuario digita o telefone 123456,
na hora de apresentar o telefone na tela, o programa apresenta apenas o primeiro caracter da string ou seja, apresenta o numero '1',
galera, sou muito leigo ainda em C,
então por favor se puderem paciencia comigo, e ficarei muito grato com qualquer ajuda
Pergunta
denin
olá galera,
sou novato na linguagem C e estou com dois problemas pra criar um programa
tenho que fazer uma lista para cadastrar nome e telefone de usuarios, e criar rotinas para cadastro de usuario, remoção de usuario, listagem e busca por usuario.
o primeiro problema está quando solicito ao usuario o nome e telefone a ser cadastrado, atraves desse codigo
rotina de cadastro que é chamada: porem ao executar, na tela aparece: Digite o nome a ser cadastrado: Digite o telefone: *o problema é que o cursor para apos a palavra telefone, ignorando o cadastro do nome e pulando para linha de baixo esperando o usuario cadastrar o telefone, o que pode ser isso? _____________ o segundo problema esta na listagem, quando o usuario escolhe a opçao de listagem. o programa deveria apresentar o nome e telefone de todos os usuarios cadastrados, porém o programa apenas apresenta o primeiro caracter do telefone, a rotina de listagem do codigo é a seguinte:Por exemplo se o usuario digita o telefone 123456,
na hora de apresentar o telefone na tela, o programa apresenta apenas o primeiro caracter da string ou seja, apresenta o numero '1',
galera, sou muito leigo ainda em C,
então por favor se puderem paciencia comigo, e ficarei muito grato com qualquer ajuda
agradeço desde já
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.