Bonsoir/bonjour tout le monde !
J'espère que vous allez bien et que cette nouvelle année à bien commencé pour vous !!
Voilà, je dois réaliser un programme qui lit dans un fichier une suite de commande et dois les éxécuter, par exemple :
ls -l
free
touch toto
J'ai fait un tableau contenant les commandes à éxécuter, ensuite je les exécutes avec :
execlp (tableau[i], tableau [i], NULL)
Vous aurez bien compris que ça ne marche que quand on à des commandes du type "ls" ou "free", mais dés qu'il y a des options c'est mort. J'ai donc commencer à coder cela :
typedef struct
{
char nomCommande[COMMAND_LIMIT];
char option[50];
char parametre[PARAMETER_LIMIT];
} Commande;
int main()
{
FILE *fichier = NULL;
Commande *cmd;
int i=0;
fichier = fopen("commande", "r");
if (fichier == NULL)
exit(1);
while (feof(fichier) == 0)
{
fscanf(fichier, "%s%s%s", cmd[i].nomCommande, cmd[i].option, cmd[i].parametre);
printf ("%s%s%s\n",cmd[i].nomCommande, cmd[i].option, cmd[i].parametre);
i++;
}
fclose(fichier);
}
Ma question est, est-il possible de tester ce que l'on récupère du fscanf ? Car si ce que l'on récupère commence par un '-' alors on le met dans cmd[i].option, et pouvoir gérer aussi les "colonnes" vides car par exemple, si on tombe sur un "ls" sans option et sans paramètre alors il prendra pour le cmd[i].option le cmd[i+1].nomCommande...
Un grand merci à tout ceux qui répondront et très bonne semaine !!