Por alguna razón, mi programa C se niega a convertir elementos de argv en ints, y no puedo entender por qué.Char no está convirtiendo a int
int main(int argc, char *argv[])
{
fprintf(stdout, "%s\n", argv[1]);
//Make conversions to int
int bufferquesize = (int)argv[1] - '0';
fprintf(stdout, "%d\n", bufferquesize);
}
Y esta es la salida cuando se ejecuta ./test 50:
-1076276207
he intentado quitar la (int), tirando tanto a * y un & entre (int) y argv [1] - el primero me dio un 5 pero no 50, pero el último me dio un resultado similar al anterior. Eliminar la operación '0' no ayuda mucho. También intenté hacer un char first = argv [1] y usar primero para la conversión, y esto me dio un 17 bastante extraño independientemente de la entrada.
Estoy muy confundido. Que esta pasando?
Creo que podría querer decir 'argv [1] [0]' (tipo es 'char') <- primer carácter del primer argumento (después del nombre del ejecutivo). Por supuesto, todavía no hay verificación con eso y hay mejores formas.No intente "descartar un error" (ya que 'argv [1]' se escribe como 'char *') porque a menudo simplemente no funciona :-) –