Voglio elaborare l'input dell'utente come un numero intero, ma sembra che C non abbia modo di ottenere un int da stdin. C'è una funzione per fare questo? Come potrei fare per ottenere un int dall'utente?Qual è il modo più semplice per ottenere un'int in un'app console?
risposta
#include <stdio.h>
int n;
scanf ("%d",&n);
Vedi http://www.cplusplus.com/reference/clibrary/cstdio/scanf/
#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);
}
da here
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;
}
Ho aggiunto una variabile numerica. –
lol thanks – TStamper
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);
}
Il mio numero va a volte negativo o casuale, perché è questo? Questo è se il mio numero intero è grande, ancora entro 32 caratteri ma ancora grande –
Un numero intero è in genere lungo 2 byte. Il bit più a sinistra viene utilizzato per memorizzare il segno del numero (0 per positivo, 1 per negativo), quindi restano 15 bit per la memorizzazione del numero stesso. Per questo motivo, gli interi in C possono variare da -32768 (-2^15 o 111111111111111111) a 32768 (2^15 o 0111111111111111). Quando inserisci un numero più grande del valore più grande possibile, al bit più a sinistra viene assegnato un valore e l'intero non rappresenta più un valore che speravi. Se vuoi inserire interi più grandi usa 'long int' o anche 'long long int' perché può contenere numeri molto più grandi. – PoVa
parte (f)scanf
, che è stata sufficientemente discussa dalle altre risposte , vi è anche atoi
e strtol
, per i casi in cui è già stato letto l'input in una stringa ma si desidera convertirlo in un int
o long
.
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 */
strtol
è raccomandato in quanto consente di determinare se un numero è stato letto con successo o meno (al contrario di atoi
, che non ha modo di segnalare qualsiasi errore e restituirà semplicemente 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);
}
- 1. Qual è il modo più semplice in Javascript per ottenere solo il segno di un numero?
- 2. Qual è il modo più semplice per mantenere oggetti java?
- 3. C#: qual è il modo più semplice per sottrarre tempo?
- 4. Qual è il modo più semplice per ottenere questi dati in un Dataframe Pandas?
- 5. Qual è il modo più semplice per ottenere l'ora GMT in formato timestamp Unix?
- 6. Qual è il modo più semplice per ottenere una OutOfMemoryException in C#?
- 7. Qual è il modo più semplice per ottenere l'input dell'utente in C?
- 8. Qual è il modo più semplice per usare reify (ottenere un AST di) un'espressione in Scala?
- 9. Qual è il modo più semplice per ottenere tfidf con dataframe panda?
- 10. Qual è il modo più semplice per ottenere Grammar :: Tracer lavorando su Perl6 stesso?
- 11. Qual è il modo più semplice per ottenere dati spaziali sql 08 su una mappa?
- 12. Qual è il modo più semplice per ottenere la posizione corrente di un iPhone?
- 13. Qual è il modo più semplice per combinare più raccolte in uno stream in Java?
- 14. Qual è il modo più semplice per ottenere una chiave con il valore più alto da un hash in Perl?
- 15. Qual è il modo più semplice per utilizzare il comando HEAD di HTTP in PHP?
- 16. Kafka - Il modo più semplice per ottenere l'ultima correzione
- 17. Qual è il modo più semplice in C# per convalidare se un'espressione regolare è ben formata?
- 18. Qual è il modo più semplice per implementare i termini dell'associazione mining in Solr?
- 19. Qual è il cloud più semplice per contenuto Web statico
- 20. Qual è il modo più semplice per accedere a un microfono di un computer in Python?
- 21. Qual è il modo più semplice per rinominare il file che stai modificando in Vim?
- 22. Qual è il modo più semplice per scambiare il char in una stringa con Python?
- 23. In Chrome, qual è il modo più semplice per visualizzare il tipo mime di un documento?
- 24. Qual è il modo più semplice per stampare il testo sullo schermo in OpenGL?
- 25. Qual è il modo più semplice per analizzare JSON in Scala?
- 26. Qual è il modo Pythonic per implementare un semplice FSM?
- 27. qual è il modo più semplice per proteggere con password il database mongodb per l'utente remoto?
- 28. Qual è il modo più semplice per esportare un database SQLServer 2000 in XML?
- 29. Qual è il modo più semplice per impostare i messaggi di dati binari personalizzati in Java?
- 30. Qual è il modo più semplice per esporre sottofunzioni del file M per il test dell'unità?
Sembra molto sospetto, memorizza entrambi il risultato di scanf() in i e legge un valore in i allo stesso tempo. Non raccomandabile – unwind