¿Cuál es la forma más sencilla de obtener un int en una aplicación de consola?

StackOverflow https://stackoverflow.com/questions/865284

  •  21-08-2019
  •  | 
  •  

Pregunta

Quiero proceso de entrada de usuario como un entero, pero parece como si C no tiene manera de conseguir un int de stdin.Hay una función para hacer esto?¿Cómo puedo obtener un int por el usuario?

¿Fue útil?

Solución

#include <stdio.h>

int n;
scanf ("%d",&n);

http://www.cplusplus.com/reference/clibrary/cstdio/ scanf /

Otros consejos

scanf() es la respuesta, pero sin duda, debe comprobar el valor de retorno, ya que muchas, muchas cosas pueden salir los números de análisis erróneos de entrada externa ...

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 función de biblioteca estándar scanf se utiliza para la entrada formateada: % D int (la d es la abreviatura de decimal)

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

Aparte de (f)scanf, que ha sido lo suficientemente discutido por las otras respuestas, también hay atoi y strtol, para los casos en que usted ya ha leído la entrada en una cadena, pero quieren convertir en 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 se recomienda, ya que permite determinar si un número se lee correctamente o no (como opuesto a atoi, que no tiene manera de informar de cualquier error, y simplemente de retorno de 0 si es dado de basura).

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

}

aquí

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top