Ajout du caractère d’échappement pour ' ' et '\'
This commit is contained in:
parent
8d4256f9d7
commit
70d155811d
1 changed files with 18 additions and 5 deletions
|
@ -54,21 +54,34 @@ void get_command(char *args[], char find)
|
||||||
*
|
*
|
||||||
* La chaine de caractères orig est découpée selon le caractère find
|
* La chaine de caractères orig est découpée selon le caractère find
|
||||||
* et chaques mots sont mis dans le tableau dest.
|
* et chaques mots sont mis dans le tableau dest.
|
||||||
|
* S’il y a un \ avant le caractère find, celui-ce sera ignoré.
|
||||||
*/
|
*/
|
||||||
void parse_string(char *orig, char *dest[], char find)
|
void parse_string(char *orig, char *dest[], char find)
|
||||||
{
|
{
|
||||||
char *token = strtok(orig, &find);
|
char *token = strtok(orig, &find);
|
||||||
|
int pred = 0, i = 0;
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
while (token != NULL && i < MAX_LENGTH)
|
while (token != NULL && i < MAX_LENGTH)
|
||||||
{
|
{
|
||||||
strcpy(dest[i], token);
|
if (pred)
|
||||||
i++;
|
{
|
||||||
|
dest[i][strlen(dest[i])-1] = find;
|
||||||
|
strcat(dest[i], token);
|
||||||
|
pred = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
strcpy(dest[i], token);
|
||||||
|
|
||||||
|
if (dest[i][strlen(dest[i])-1] == '\\')
|
||||||
|
pred = 1;
|
||||||
|
else
|
||||||
|
i++;
|
||||||
|
|
||||||
token = strtok(NULL, &find);
|
token = strtok(NULL, &find);
|
||||||
}
|
}
|
||||||
|
|
||||||
// le dernier argument doit être NULL
|
/** le dernier argument doit être NULL
|
||||||
// car il est vide et provoque une erreur si non NULL
|
car il est vide et provoque une erreur si non NULL */
|
||||||
free(dest[i]);
|
free(dest[i]);
|
||||||
dest[i] = NULL;
|
dest[i] = NULL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue