Lendo strings com espaço em branco usando scanf
Dica publicada em C/C++ / Expressões Regulares
Lendo strings com espaço em branco usando scanf
Olá!
Aí vai uma dica para os amantes de C que adoram usar scanf para ler dados do teclado. Muitos até já publicaram dicas para ler strings com scanf, mas as se depararem com o espaço em branco encontram uma certa dificuldade.
Pois a partir de um espaço em branco o scanf não lê mais os caracteres restantes, imprimindo apenas os caracteres que se encontram antes do espaço em branco. Bom chega de explicações, vamos para a prática.
Vejam abaixo dois códigos-fonte com alterações apenas no scanf:
Código 1:
Aí vai uma dica para os amantes de C que adoram usar scanf para ler dados do teclado. Muitos até já publicaram dicas para ler strings com scanf, mas as se depararem com o espaço em branco encontram uma certa dificuldade.
Pois a partir de um espaço em branco o scanf não lê mais os caracteres restantes, imprimindo apenas os caracteres que se encontram antes do espaço em branco. Bom chega de explicações, vamos para a prática.
Vejam abaixo dois códigos-fonte com alterações apenas no scanf:
Código 1:
#include <stdio.h>
int main()
{
char str[20];
scanf("%s",str);
printf("A string digitada foi: %s\n", str);
return 0;
}
Código 2:
#include <stdio.h>
int main()
{
char str[20];
scanf("%[A-Z a-z]",str);
printf("A string digitada foi: %s\n", str);
return 0;
}
int main()
{
char str[20];
scanf("%[A-Z a-z]",str);
printf("A string digitada foi: %s\n", str);
return 0;
}
No código 1 utiliza-se normalmente o scanf. Já no código 2 o scanf irá ler caracteres de todo alfabeto em maiúsculo, o espaço em branco e minúsculo, respectivamente.
Falou pessoal, espero que aprovem a minha primeira diga. Até mais!!!
#include <stdio.h>
int main(){
...
scanf("%[^\n]", str);
...
}
A instrução [^\n] diz ao comando scanf() para ler tudo até encontrar retorno de carro (ENTER)... no caso, representado pelo simbolo '\n'...
Mais foi uma boa dica para os que estão iniciando agora... valeu! ;-)
Abraço