Ir ao conteúdo

Duvida scanf e gets c++


NewCod

Posts recomendados

Postado

Olá amigos

Duvida, quando uso scanf ele não "pega" o resto da frase apos o espeço já com o gets "pega" normal.

exemplo

___________________________________________

int main ()

{

char azul[110];

printf("Digite seu nome: ");

scanf("%s", azul);

printf("seu nome e: %s", azul);

printf("\n");

system("PAUSE");

return 0;

}

___________________________________________

No codigo acima digamos que respondo

Joaozinho Bahia Salvador

ele responde apenas Joao

já com o gets(azul); no lugar do scan

responde completo, porque isso?

Obrigado.

Postado

No caso do scanf ele pega toda a linha ate encontrar o primeiro espaço ou um enter, ja o gets captura toda a linha até encontrar um enter.

Mas o scanf pode captura uma linha completa com espaços, para isso use


char azul[110];

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

printf("seu nome e: %s", azul);
printf("\n");

Ele vai capturar tudo ate encontrar um enter. Isso vai dar problemas com o buffer do teclado quando você estiver usando mais de um scanf no seu programa, basta usar um getchar() pra limpar o buffer

Postado
Não seria fflush para limpar o buffer do teclado?

O fflush funciona bem apenas nos sistemas windows já no linux tem comportamento imprevisível(muitos dizem que não funciona ou não faz nada, nunca testei). E o getchar funciona em ambas, sua função principal é remover o '\n' que fica após cada enter

Arquivado

Este tópico foi arquivado e está fechado para 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!