Question

je veux faire le programme C, "animal.c".
et en coquille,
lorsque type i

>animal -cat

le résultat est "miaou"

>animal -dog

le résultat est "arc".
est-il seul moyen?

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

dans d'autres cas, quand je veux faire le fichier « chat » qui localise dans « / animal »,
en supposant que le dossier « animal » localise déjà dans le répertoire racine.

     animal -cat  

le résultat rend le fichier « chat » dans « / animal »
le fichier « chat » "de chemin absolu est « / animaux / chat »

comment faire?
est-il une autre façon de recevoir la valeur de l'option?

Était-ce utile?

La solution

getopt est un populaire et d'une manière presque standard l'analyse des options de ligne de commande. Vous devriez l'utiliser (ou quelque chose de similaire) plutôt que d'analyser les arguments de ligne de commande à la main. Il est l'erreur énormément sujette.

Autres conseils

Si vous passez un nom de fichier, vous ne devriez pas mettre « - » devant elle. En fait, « - » est un modificateur qui indique « option de caractère * suivi * de », « - ». Est un modificateur qui indique « l'option avec le nom plus que le caractère unique suit »

La première étape pour easen votre douleur serait d'utiliser strncmp au lieu de tester chaque caractère de l'argument passé.

how to do ?

Pour répondre à votre dernière question, vous devez utiliser quelque chose comme mkdir conjointement avec fopen pour créer le fichier.

is there another way to receive option value? Il est un moyen d'obtenir des valeurs « option » en redirigeant l'entrée. Si vous aviez deux lignes dans votre programme qui avait 2 fgets:

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

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

et dans un fichier appelé donnees.txt vous HAD

 Bob
 04/27/11

vous pouvez rediriger l'entrée à votre programme comme

 myprog < data.txt

et ce serait comme vous entrez les valeurs vous-même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top