Modification fonctions parse et tok_space

This commit is contained in:
rick 2021-02-16 20:31:09 +01:00
parent d11457ec63
commit 745a5d753d
Signed by: Rick
GPG key ID: 2B593F087240EE99
3 changed files with 7 additions and 23 deletions

View file

@ -41,22 +41,7 @@ char* get_input()
void parse_char(char *args[], char find) void parse_char(char *args[], char find)
{ {
char *user_input = get_input(); char *user_input = get_input();
char *token = strtok(user_input, &find); tok_space(user_input, args, 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); free(user_input);
} }
@ -64,14 +49,13 @@ void parse_char(char *args[], char find)
* tok_space(): Découpe la chaine orig et met chaque mot dans le tableau dest * tok_space(): Découpe la chaine orig et met chaque mot dans le tableau dest
* @orig: chaine à découper * @orig: chaine à découper
* @dest: tableau de string sera stocker les mots * @dest: tableau de string sera stocker les mots
* @find: caractère à utilise pour parser la chaine orig
* *
* La chaine de caractères orig est découper avec les espaces et chaques * La chaine de caractères orig est découpée selon le caractère find
* mots sont mis dans le tableau dest. * et chaques mots sont mis dans le tableau dest.
*/ */
void tok_space(char *orig, char *dest[]) void tok_space(char *orig, char *dest[], char find)
{ {
char find = ' ';
char *token = strtok(orig, &find); char *token = strtok(orig, &find);
int i = 0; int i = 0;

View file

@ -12,6 +12,6 @@
char* get_input(); char* get_input();
void parse_char(char *args[], char find); void parse_char(char *args[], char find);
void tok_space(char *args,char *commands[]); void tok_space(char *args,char *commands[], char find);
#endif #endif

View file

@ -39,7 +39,7 @@ int main()
pid = fork(); pid = fork();
if (!pid) if (!pid)
{ {
tok_space(args[index], command); tok_space(args[index], command, ' ');
if (args[1] != NULL) if (args[1] != NULL)
{ {
if (args[index+1] == NULL) if (args[index+1] == NULL)