1
resposta

Estou fazendo uma mini shell em C, mas estou com problema quando executo o comando cd, ele simplesmente não funciona, alguém ajuda?

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include <stdbool.h>
#include<sys/types.h>

//comandos
char hello[100] = "hello";
char cd1[100] = "cd";
char exit1[100] = "exit";
char help1[100] = "help";

//user


void helloFuncao() {

    printf("*    Bem-Vindo %s   *\n", getenv("USER"));

}

void cdFuncao() {
    printf("%s\n", getcwd(cd1, 100));
    chdir("..");
    printf("%s\n", getcwd(cd1, 100));
}

void helpFuncao() {
    printf("\ncd");
    printf("\nexit\n");
    printf("\nhello\n");
}

int main(){
    char codigo[100];
    bool insi = false;
    getenv("USER");
    do
    {


        printf("%s@%s $ ",getcwd(cd1,100),getenv("USER"));
        gets(codigo);

         if(strstr(codigo, cd1)) {
            cdFuncao();
        }

     else if(strcmp(codigo, hello) == 0) {
            helloFuncao();
        }
        else if(strcmp(codigo, help1) == 0) {
            helpFuncao();
        }

        else if(strcmp(codigo, exit1) == 0) {
            exit(0);
        }
        else {

            printf("\nNao suportado \n");
        }

    } while (insi != true);

}
1 resposta

Oi Moroni tudo bem?

No if do cd você escreveu strstr ao invés de strcmp por isso não funcionou.

Espero ter ajudado!!!