Salta uma linha de comando...

1. Salta uma linha de comando...

Joao Alves Nunes
joao76

(usa Solaris)

Enviado em 11/09/2013 - 11:45h

No codigo abaixo, nao e' solicitado o nome.
Ele salta e vai pedir o endereco.

Fico muito grato antecipadamente!!!

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(void)
{
char nome[30], end[40], tel[10];
int matr;
float salb;
system ("cls");
printf("Digite a sua matricula:");
scanf("%d",&matr);
printf("Digite o seu nome:");
fgets(nome,50,stdin);
printf("Digite o seu endereco:");
fgets(end,50,stdin);
printf("Digite o seu telefone:");
fgets(tel,50,stdin);
printf("Digite o seu salario:");
scanf("%f",&salb);
printf("\nMatricula: %d",matr);
printf("\nNome: %s",nome);
printf("\nEndereco: %s",end);
printf("\nTelefone: %s",tel);
printf("\nSalario: %.2f",salb);
system("pause");
}


  


2. Re: Salta uma linha de comando...

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 11/09/2013 - 12:41h

Limpe o buffer de entrada antes de todos os scanf()'s.

No windows:


fflush(stdin);


No Linux:


__fpurge(stdin);


Enzo Ferber
[]'s


3. Re: Salta uma linha de comando...

Joao Alves Nunes
joao76

(usa Solaris)

Enviado em 11/09/2013 - 18:36h

Agradeco a sua especial atencao...
Infelizmente o problema continua apos suas instrucoes.
Veja a nova versao:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(void)
{
char nome[30], end[40], tel[10];
int matr;
float salb;
system ("cls");
fflush(stdin); /*sua instrucao*/
printf("Digite o sua matricula:");
scanf("%d",&matr);
printf("Digite o seu nome:");
fgets(nome,50,stdin);
printf("Digite o seu endereco:");
fgets(end,50,stdin);
printf("Digite o seu telefone:");
fgets(tel,50,stdin);
printf("Digite o seu salario:");
scanf("%f",&salb);
printf("\nMatricula: %d",matr);
printf("\nNome: %s",nome);
printf("\nEndereco: %s",end);
printf("\nTelefone: %s",tel);
printf("\nSalario: %.2f",salb);
system("pause");
}



4. Re: Salta uma linha de comando...

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 11/09/2013 - 19:45h

o fflush é para windows no linux é

__fpurge(stdin);



5. Re: Salta uma linha de comando...

wellington
wellingtonsr

(usa Slackware)

Enviado em 11/09/2013 - 22:56h

Você pode usar assim:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(void){

char nome[30], end[40], tel[10];
char matr[20];
float salb;


system ("cls");
printf("Digite a sua matricula:");
scanf("%19[0123456789]", matr);
scanf("%*[^\n]");
scanf("%*c");


printf("Digite o seu nome:");
scanf("%29[^\n]", nome);
scanf("%*[^\n]");
scanf("%*c");



printf("Digite o seu endereco:");
scanf("%39[^\n]", end);
scanf("%*[^\n]");
scanf("%*c");



printf("Digite o seu telefone:");
scanf("%9[^\n]", tel);
scanf("%*[^\n]");
scanf("%*c");



printf("Digite o seu salario:");
scanf("%f",&salb);


printf("\nMatricula: %s",matr);
printf("\nNome: %s",nome);
printf("\nEndereco: %s",end);
printf("\nTelefone: %s",tel);
printf("\nSalario: %.2f\n",salb);


system("pause");
return 0;
}




Ou pode usar uma funçao para limpar o buffer:



#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void limpa_buffer(void);


int main(void){

char nome[30], end[40], tel[10];
int matr[20];
float salb;


system ("cls");
printf("Digite a sua matricula:");
scanf("%19[0123456789]", matr);
limpa_buffer();

printf("Digite o seu nome:");
scanf("%29[^\n]", nome);
limpa_buffer();


printf("Digite o seu endereco:");
scanf("%39[^\n]", end);
limpa_buffer();


printf("Digite o seu telefone:");
scanf("%9[^\n]", tel);
limpa_buffer();


printf("Digite o seu salario:");
scanf("%f",&salb);


printf("\nMatricula: %s",matr);
printf("\nNome: %s",nome);
printf("\nEndereco: %s",end);
printf("\nTelefone: %s",tel);
printf("\nSalario: %.2f\n",salb);


system("pause");
return 0;
}

void limpa_buffer(void){
char c;
while((c = getchar()) != '\n' && c != EOF);
}




Com matricula pode usar string, já que não vai fazer cálculos.


fonte:

https://www.youtube.com/watch?v=W-X2_v4Oyx8
http://wiki.portugal-a-programar.pt/dev_geral:c:scanfparastrings


6. Re: Salta uma linha de comando...

Joao Alves Nunes
joao76

(usa Solaris)

Enviado em 12/09/2013 - 19:46h

Meu caro amigo wellingtonsr,
parabens pelas suas orientacoes!!!
Fiquei deveras satisfeito.
Se puder, mande mais informacoes
sobre a sintaxe usada para acessar
dados via teclado...
Afetuosa saudacao!!!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts