Tengo este código escrito en C que hace una conversión de decimal a binario. ¿Cómo puedo hacer que obtenga el parámetro de la línea de comando en Linux? Sé que tengo que usar algo como int main(int argc, char *argv[]) pero no sé cómo implementarlo.
#include <stdio.h> int main() { int a[10], decimal, i, j; printf("\nIntroduceti numarul decimal: "); scanf("%d", &decimal); for(i = 0; decimal > 0; i++) { a[i] = decimal % 2; decimal = decimal / 2; } printf("\nNumarul binar este: "); for(j = i - 1; j >= 0; j--) { printf("%d", a[j]); } printf("\n"); return 0; }Tu quieres esto:
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { if (argc < 2) { printf("missing command line argument\n"); return 1; } int decimal = (int)strtol(argv[1], NULL, 10); ... }(int) cast es para dejar en claro que convertimos explícitamente el long int devuelto por strtol a int , que puede o no ser un tipo más pequeño que long int , dependiendo de su plataforma.strtol .argc y argvResponder:
#include <stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) { int a[10], decimal, i, j; decimal = atoi(argv[1]); for(i = 0; decimal > 0; i++) { a[i] = decimal % 2; decimal = decimal / 2; } printf("\nNumarul binar este: "); for(j = i - 1; j >= 0; j--) { printf("%d", a[j]); } printf("\n"); return 0; }
Aquí gcc es el compilador c, y demo.c es el nombre del archivo Después de compilar correctamente su archivo, ./a.out es el comando para ejecutar ese archivo de compilación y agregarle el argumento de la línea de comandos, como se muestra en la imagen. atoi(argv 1 ) vea argv[0] es el nombre del archivo, argv 1 es el argumento, y atoi se usa para convertir una cadena a int, ya que solo podemos tomar la entrada de cadena desde la línea de comando, y argc es el número total de argumento que el usuario ha dado.