Obtenha a entrada do usuário em C
-
Use a função
scanf
para obter a entrada do usuário de acordo com o formato fornecido em C -
Use
scanf
para analisar a entrada do usuário com base na formatação fornecida
Este artigo demonstrará vários métodos sobre como obter a entrada do usuário em C.
Use a função scanf
para obter a entrada do usuário de acordo com o formato fornecido em C
A função scanf
processa a entrada do usuário como o texto formatado e armazena o valor da string convertida no ponteiro fornecido. O protótipo da função é semelhante à família de funções printf
. Leva o argumento da string de formato como uma diretiva sobre como processar os caracteres de entrada e, em seguida, um número variável de argumentos de ponteiro para armazenar os valores correspondentes.
Observe que, o especificador %[^\n]
direciona o scanf
para processar cada caractere antes do primeiro caractere de nova linha como uma string e armazená-lo no buffer char*
. O buffer de destino deve ser grande o suficiente para a string de entrada do usuário. Além disso, um caractere opcional m
pode ser usado nos especificadores de conversão de string e forçará a função a alocar um tamanho de buffer suficiente para armazenar a string de entrada. Assim, o usuário precisaria chamar a função livre
depois que o ponteiro fornecido não fosse mais necessário.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char str1[1000];
printf("Input the text: ");
scanf("%[^\n]", str1); // takes everything before '\n'
printf("'%s'\n", str1);
exit(EXIT_SUCCESS);
}
Resultado:
Input the text: temp string to be processed
'temp string to be processed'
Alternativamente, podemos utilizar scanf
para processar qualquer entrada de texto antes do caractere fornecido, modificando o especificador de string de formato. O exemplo a seguir mostra a chamada scanf
que verifica a entrada do usuário até que o primeiro caractere do valor 9
seja encontrado.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char str1[1000];
printf("Input the text: ");
scanf(" %[^9]*", str1); // takes everything before '9' in string
printf("'%s'\n", str1);
exit(EXIT_SUCCESS);
}
Resultado:
Input the text: temporary string 32j2 923mlk
'temporary string 32j2 '
Use scanf
para analisar a entrada do usuário com base na formatação fornecida
Outro recurso útil da função scanf
é analisar a entrada do usuário com base no formato fornecido. O caractere *
é usado na string de formato para descartar a correspondência dos caracteres seguindo o especificador de conversão. O próximo exemplo de código demonstra quando o scanf
analisa as entradas de texto que consistem no símbolo :
obrigatório e armazena apenas caracteres após o símbolo fornecido no final da linha. Esta opção pode ser útil para digitalizar os textos de formato fixo onde certos caracteres estão presentes nas posições do delimitador.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char str1[1000];
printf("Input the text: ");
scanf("%*[^:]%*c%[^\n]", str1);
printf("'%s'\n", str1);
exit(EXIT_SUCCESS);
}
Resultado:
Input the text: temporary value of var3: 324 gel
' 324 gel'
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook