Quieres recoger opciones de linea de comandos en tu programa de c?
En la libreria glibc de linux se puede usar la funcion getopt para gestionar de forma correcta los argumentos.
Este es un ejemplo con mucho printf para debug.
/**
* getopt.c
* Pequeño ejemplo de codigo que muestra el uso de la funcion getopt
* Es una funcion util para recoger parametros de programas, que va mas
* alla de recorrer el array de argumentos argv[]
*/// dentro de la libreria unistd encontramos la funcion getopt#include <unistd.h>
#include <stdio.h>
// funcion para mostrar un texto de errorvoidexplicacion(char*argv[]);// funcion principalintmain(intargc,char*argv[]){intopcionA=0;intopcionV=0;char*parametroC=' ';inti;intopcion;opterr=0;// primero veamos los argumentos "en bruto"printf("--[Argumentos recibidos]--------------------------------");for(i=0;i<argc;i++){printf(" argumento %d = %s",i,argv[i]);}printf("--------------------------------------------------------");// Esta es una forma habitual de recoger argumentos con getopt// se usa una iteracion y cada elemento se pasa por un switch-casewhile((opcion=getopt(argc,argv,"avc:"))!=-1){switch(opcion){case'a':opcionA=1;break;case'v':opcionV=1;break;case'c':parametroC=optarg;break;// en caso de error getopt devuelve el caracter ?case'?':if(isprint(optopt))fprintf(stderr,"Opcion desconocida `-%c'.",optopt);elsefprintf(stderr,"Caracter de opcion desconocido `\x%x'.",optopt);return1;// en cualquier otro caso lo consideramos error grave y salimosdefault:explicacion(argv);exit(-1);}// case}// whileprintf("opcionA = %d, opcionV = %d, parametroC = %s",opcionA,opcionV,parametroC);// Volvemos a ver los argumentos en bruto y ATENCION: getopt nos ha cambiado el orden// dejando al final los argumentos no reconocidosprintf("--[Argumentos recibidos]--------------------------------");for(i=0;i<argc;i++){printf(" argumento %d = %s",i,argv[i]);}printf("--------------------------------------------------------");// Si existe un grupo de opciones no reconocidas las mostramos// getopt pone un indice donde se inician los argumentos desconocidos: optindfor(i=optind;i<argc;i++){printf("Este argumento no se espera %s",argv[i]);}// si este indice devuelto por getopt es menor que argc, debemos mostrar el error.if(optind<argc){explicacion(argv);}return0;}// implementacion de la funcion de explicacion.voidexplicacion(char*argv[]){printf("aLa has defecado pero de gordo.");printf("El uso correcto es:%s",argv[0]);printf(" -a -v -c <valor>");}