Ottieni input utente in C
-
Utilizzare la funzione
scanf
per ottenere l’input dell’utente in base al formato dato in C -
Usa
scanf
Parse input utente in base alla formattazione data
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'
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