Ottieni input utente in C

Jinku Hu 12 ottobre 2023
  1. Utilizzare la funzione scanf per ottenere l’input dell’utente in base al formato dato in C
  2. Usa scanf Parse input utente in base alla formattazione data
Ottieni input utente in C

Questo articolo illustrerà più metodi su come ottenere l’input dell’utente in C.

Utilizzare la funzione scanf per ottenere l’input dell’utente in base al formato dato in C

La funzione scanf elabora l’input dell’utente come testo formattato e memorizza il valore della stringa convertito nel puntatore dato. Il prototipo di funzione è simile alla famiglia di funzioni printf. Accetta l’argomento della stringa di formato come direttiva su come elaborare i caratteri di input e quindi un numero variabile di argomenti del puntatore per memorizzare i valori corrispondenti.

Nota che, l’identificatore %[^\n] ordina a scanf di elaborare ogni carattere prima del primo carattere di nuova linea come una stringa e di memorizzarlo nel buffer char*. Il buffer di destinazione dovrebbe essere sufficientemente grande per la stringa di input dell’utente. Inoltre, un carattere opzionale m può essere utilizzato negli specificatori di conversione della stringa e costringerà la funzione ad allocare una dimensione del buffer sufficiente per memorizzare la stringa di input. Pertanto, l’utente dovrebbe chiamare la funzione free dopo che il puntatore specificato non è più necessario.

#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);
}

Produzione:

Input the text: temp string to be processed
'temp string to be processed'

In alternativa, possiamo utilizzare scanf per elaborare qualsiasi input di testo prima del carattere dato modificando l’identificatore della stringa di formato. Il seguente esempio mostra la chiamata scanf che scansiona l’input dell’utente fino a trovare il primo carattere del valore 9.

#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);
}

Produzione:

Input the text: temporary string 32j2 923mlk
'temporary string 32j2 '

Usa scanf Parse input utente in base alla formattazione data

Un’altra caratteristica utile della funzione scanf è analizzare l’input dell’utente in base al formato dato. Il carattere * viene utilizzato nella stringa di formato per eliminare i caratteri corrispondenti seguendo l’identificatore di conversione. L’esempio di codice successivo mostra quando scanf analizza gli input di testo costituiti dal simbolo : obbligatorio e memorizza solo i caratteri dopo il simbolo dato alla fine della linea. Questa opzione potrebbe essere utile per la scansione di testi in formato fisso in cui alcuni caratteri sono presenti nelle posizioni del delimitatore.

#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);
}

Produzione:

Input the text: temporary value of var3: 324 gel
' 324 gel'
Autore: 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

Articolo correlato - C IO