Removing files in c

0

I'm doing a job and I came in a part of removing the file that the user wants, but it reads and does not remove. to remove should i use extension (.txt)? if so how?

void removeCliente() {
    char codigo [50]; int excl;
    int *p;
    char * file_name;
    //FILE* verifica;
    printf("entre com o código do cliente que deseja excluir:");
    scanf("%s",&codigo);
    file_name=codigo;

      FILE *fo = fopen(file_name,"r");
    if (fo == NULL){
        printf("Ocorreu um erro!");
        //return 0;
    }

    else{
            fclose(file_name);
    fflush(stdin);
       remove(file_name);
    printf("usuario %d removido com sucesso");
    //sleep(10);
    }
    menugerente();
}
    
asked by anonymous 28.11.2018 / 20:12

1 answer

0

As you said, it looks like your input does not have the file extension and your file has.

You can use a sprintf to generate the new file name.

So you can do it like this:

void removeCliente() {
    char codigo[50];
    char file_name[32];

    printf("Entre com o código do cliente que deseja excluir:");

    scanf("%s", &codigo);

    // Setamos a variável file_name como sendo o texto de codigo mais a adição do texto "txt"
    sprintf(file_name, "%s.txt", codigo);

    FILE *fo = fopen(file_name, "r");
    if (fo == NULL) 
        printf("Ocorreu um erro! O usuario não existe");
    else 
    {
        fclose(fo);
        fflush(stdin);
        remove(file_name);
        // Você havia colocado um %d sendo que era uma string, então, alterei para %s
        printf("usuario %s removido com sucesso", codigo);
    }

    menugerente();
}

I also point out that if it is in another folder, you should put the full path to remove it correctly.

So, your sprintf could have one more argument being the default path, defined somewhere in your project.

Example:

sprintf(file_name, "%s\%s.txt", caminho_do_arquivo, codigo);

    
28.11.2018 / 20:40