J'écris un simple shell Unix en C. Voici ce que j'ai jusqu'ici.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main() {
char x[256], y[256], z[256];
while (1) {
getcwd(y, sizeof(y));
printf("%s$ ", y);
fgets(x, sizeof(x), stdin);
if (x[0] == 'c' && x[1] == 'd' && x[2] == ' ') {
sscanf(x, "cd %s", &z);
chdir(z);
}
else if (strcmp(x, "exit\n") == 0) break;
else system(x);
}
return 0;
}
Ce que je voudrais faire, c'est rendre le caractère tilde (~) et $ HOME interchangeables. Je me suis dit que je pouvais le faire avec une simple fonction de recherche et remplacement. Est-ce que quelqu'un sait d'une telle chose?
Pour ressembler à un vrai shell, vous ne voulez pas qu'ils soient interchangeables - alors vous ne pourrez pas entrer du tilde du tout. Vous pouvez commencer par remplacer le tilde * non cité * au début du mot par la valeur de $ HOME. –