rishtik/src/include/mylib.c

83 lines
1.8 KiB
C
Raw Normal View History

2021-02-16 16:12:37 +01:00
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mylib.h"
/**
* @brief Permet de récupérer la commande de lutilisateur
*
* @param user_input entrée de lutilisateur, 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 lentrée de lutilisateur 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);
}