Pregunta

Quiero hacer el programa C, "animal.c".
y en shell,
Cuando escribo

>animal -cat

El resultado es "miau"

>animal -dog

El resultado es "arco".
¿Es solo la forma?

void main(int argc, char **argv){
if(argv[1][0] == '-' && argv[1][1] == 'c' && argv[1][2] == 'a' && argv[1][3] == 't')
    printf("meow");
if(argv[1][0] == '-' && argv[1][1] == 'd' && argv[1][2] == 'o' && argv[1][3] == 'g')
    printf("bow");
}

En otro caso, cuando quiero hacer el archivo 'gato' que se ubica en "/animal",
Suponiendo que la carpeta 'animal' ya se ubica en el directorio raíz.

     animal -cat  

El resultado es hacer que el archivo sea "gato" en "/animal"
La ruta absoluta del archivo "Cat" es "/animal/gato"

cómo hacer ?
¿Hay otra forma de recibir el valor de la opción?

¿Fue útil?

Solución

getopt es una forma popular y casi estándar de analizar las opciones de línea de comandos. Debe usar eso (o algo similar) en lugar de analizar los argumentos de la línea de comandos a mano. Es tremendamente propenso al error.

Otros consejos

Si pasa un nombre de archivo, no debe poner '-' frente a él. En realidad, '-' es un modificador que dice 'Opción de carácter único* S* Sigue', '-' es un modificador que dice 'la opción con nombre más largo de lo que sigue un solo carácter'.

El primer paso para facilitar su dolor sería usar STRNCMP en lugar de probar cada carácter del argumento aprobado.

how to do ?

Para responder a su última pregunta, debe usar algo como mkdir junto con Fopen para crear el archivo.

is there another way to receive option value?Hay una manera de obtener valores de "opción" redirigiendo la entrada. Si tuviera dos líneas en su programa que tenían 2 FGETS:

char name[10];
char date[9];

fgets(name,10,stdin);
fgets(date,9,stdin);

y en un archivo llamado data.txt que tenía

 Bob
 04/27/11

Puede redirigir la entrada a su programa como

 myprog < data.txt

Y sería como si ingresara los valores usted mismo.

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