Obtenha a entrada do usuário em C

Jinku Hu 12 outubro 2023
  1. Use a função scanf para obter a entrada do usuário de acordo com o formato fornecido em C
  2. Use scanf para analisar a entrada do usuário com base na formatação fornecida
Obtenha a entrada do usuário em C

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'
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Artigo relacionado - C IO