Qual è il modo più semplice per ottenere un int in una console app?
-
21-08-2019 - |
Domanda
Voglio per elaborare l'input dell'utente come un intero, ma sembra come se C non ha alcun modo per ottenere un int da stdin. C'è una funzione per fare questo? Come potrei fare per ottenere un int da parte dell'utente?
Soluzione
#include <stdio.h>
int n;
scanf ("%d",&n);
Altri suggerimenti
scanf()
è la risposta, ma si dovrebbe certamente controllare il valore restituito dal momento che molte, molte cose possono andare i numeri di analisi sbagliate da ingresso esterno ...
int num, nitems;
nitems = scanf("%d", &num);
if (nitems == EOF) {
/* Handle EOF/Failure */
} else if (nitems == 0) {
/* Handle no match */
} else {
printf("Got %d\n", num);
}
La funzione di libreria standard scanf viene utilizzato per l'input formattato: % D int (la D è l'abbreviazione di decimale)
#include <stdio.h>
int main(void)
{
int number;
printf("Enter a number from 1 to 1000: ");
scanf("%d",&number);
printf("Your number is %d\n",number);
return 0;
}
A parte (f)scanf
, che è stata sufficientemente discussa dalle altre risposte, c'è anche atoi
e strtol
, nei casi in cui si dispone già di leggere l'input in una stringa, ma vuole convertirlo in un <= > o int
.
char *line;
scanf("%s", line);
int i = atoi(line); /* Array of chars TO Integer */
long l = strtol(line, NULL, 10); /* STRing (base 10) TO Long */
/* base can be between 2 and 36 inclusive */
long
è consigliata perché consente di determinare se un numero è stato letto o meno con successo (al contrario di <=>, che non ha modo di segnalare eventuali errori, e sarà semplicemente restituire 0 se dato spazzatura).
char *strs[] = {"not a number", "10 and stuff", "42"};
int i;
for (i = 0; i < sizeof(strs) / sizeof(*strs); i++) {
char *end;
long l = strtol(strs[i], &end, 10);
if (end == line)
printf("wasn't a number\n");
else if (end[0] != '\0')
printf("trailing characters after number %l: %s\n", l, end);
else
printf("happy, exact parse of %l\n", l);
}
#include <stdio.h>
main() {
int i = 0;
int k,j=10;
i=scanf("%d%d%d",&j,&k,&i);
printf("total values inputted %d\n",i);
printf("The input values %d %d\n",j,k);
}