83 lines
1.8 KiB
C
83 lines
1.8 KiB
C
|
#include <stdio.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include <string.h>
|
|||
|
|
|||
|
#include "mylib.h"
|
|||
|
|
|||
|
/**
|
|||
|
* @brief Permet de récupérer la commande de l’utilisateur
|
|||
|
*
|
|||
|
* @param user_input entrée de l’utilisateur, contiendrat la commande à exécuter
|
|||
|
*/
|
|||
|
void get_input(char *user_input)
|
|||
|
{
|
|||
|
char *buffer = (char *) malloc(MAX_LENGTH);
|
|||
|
memset(user_input, 0, MAX_LENGTH);
|
|||
|
printf("\n> ");
|
|||
|
fgets(buffer, MAX_LENGTH, stdin);
|
|||
|
while (buffer[0] == '\n')
|
|||
|
{
|
|||
|
printf("\n> ");
|
|||
|
fgets(buffer, MAX_LENGTH, stdin);
|
|||
|
}
|
|||
|
strncpy(user_input, buffer, strlen(buffer)-1);
|
|||
|
free(buffer);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief récupère l’entrée de l’utilisateur et la découpe
|
|||
|
* selon le caractère passé en paramètre
|
|||
|
*
|
|||
|
* @param args Tableau de string qui sera modifié avec
|
|||
|
* les arguments de la commande
|
|||
|
* @param find Le caractère à utiliser pour découper la chaine
|
|||
|
*/
|
|||
|
void parse_char(char *args[], char find)
|
|||
|
{
|
|||
|
char *user_input = (char *) malloc(MAX_LENGTH);
|
|||
|
get_input(user_input);
|
|||
|
|
|||
|
char *token = strtok(user_input, &find);
|
|||
|
|
|||
|
int i = 0;
|
|||
|
while (token != NULL && i < MAX_LENGTH)
|
|||
|
{
|
|||
|
strcpy(args[i], token);
|
|||
|
i++;
|
|||
|
token = strtok(NULL, &find);
|
|||
|
}
|
|||
|
|
|||
|
// le dernier argument doit être NULL
|
|||
|
// car il est vide et provoque une erreur si non NULL
|
|||
|
free(args[i]);
|
|||
|
args[i] = NULL;
|
|||
|
|
|||
|
free(token);
|
|||
|
free(user_input);
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
* @brief parse la chaine orig avec les espaces et la met dans le tableau dest
|
|||
|
* */
|
|||
|
void tok_space(char *orig, char* dest[])
|
|||
|
{
|
|||
|
char find = ' ';
|
|||
|
|
|||
|
char *token = strtok(orig, &find);
|
|||
|
|
|||
|
int i = 0;
|
|||
|
while (token != NULL && i < MAX_LENGTH)
|
|||
|
{
|
|||
|
strcpy(dest[i], token);
|
|||
|
i++;
|
|||
|
token = strtok(NULL, &find);
|
|||
|
}
|
|||
|
|
|||
|
// le dernier argument doit être NULL
|
|||
|
// car il est vide et provoque une erreur si non NULL
|
|||
|
free(dest[i]);
|
|||
|
dest[i] = NULL;
|
|||
|
|
|||
|
free(token);
|
|||
|
}
|