Ir para conteúdo
Fórum Script Brasil
  • 0

Excluir arquivo oculto (em C)


Rodrigo C.

Pergunta

Pessoal, sou novato no C e preciso fazer um programa que exclua um arquivo de indice que esta dentro de uma unidade removivel.

Criei um programa onde o usuario digita a letra da unidade e quando teclar ENTER o programa deverá excluir o arquivo, que é oculto e considerável arquivo de sistema, pelo Windows XP. A extensão é .LIB

Este é o meu código. Ele roda mas não exclui de fato o arquivo:

#include <stdio.h>

#include <string.h>

main(void)

{

char letra[1];

char caminho[20];

printf("Digite a letra da unidade:\n");

scanf("%c", &letra);

strcpy(caminho, letra);

strcat(caminho, ":\music.lib");

remove(caminho);

}

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Marcelo, eu não sei como postar o código. Cliquei com CTRL pressionado e me abriu a stdio.h, é isso que você precisa pra me ajudar?

Se for útil, informo que estou usando o Dev-C++ 4.9.9.2...

O seu problema está na função remove. Coloque o código dela para vermos o que está errado.

Link para o comentário
Compartilhar em outros sites

  • 0

Me desculpe, eu me confundi. Esta função é da stdio mesmo, não uma função desenvolvida por você... :)

O problema está no nome do arquivo. Dentro de uma string o caracter seguido por \ é considerado um caracter especial como é o \n ou \t. Para inserir uma \ na string ela deve ser digitada dobrada. Assim o nome do arquivo deve ser ":\\music.lib"

Link para o comentário
Compartilhar em outros sites

  • 0
Me desculpe, eu me confundi. Esta função é da stdio mesmo, não uma função desenvolvida por você... :)

O problema está no nome do arquivo. Dentro de uma string o caracter seguido por \ é considerado um caracter especial como é o \n ou \t. Para inserir uma \ na string ela deve ser digitada dobrada. Assim o nome do arquivo deve ser ":\\music.lib"

Marcelo, o que voce me falou deu certo porém eu printei a variavel "caminho" para ver por que não esta excluindo o arquivo e me surpreendi ao ver que a variavel concatenou os valores com quebra de linha.

Veja bem:

Se eu digitar F para a variável LETRA, o resultado final de CAMINHO é

strcpy(caminho, letra);

strcat(caminho, "\\:MUSIC.LIB");

printf("%s", caminho);

---------------------------------

F

\\:MUSIC.LIB

(com a quebra de linha, entende?)

Como eu posso resolver isso? =[

Link para o comentário
Compartilhar em outros sites

  • 0

Resolvi.

Usei letra[1] = /0 para terminar a string e parou de quebrar a linha. O /n estava no final da variavel letra.

Me desculpe, eu me confundi. Esta função é da stdio mesmo, não uma função desenvolvida por você... :)

O problema está no nome do arquivo. Dentro de uma string o caracter seguido por \ é considerado um caracter especial como é o \n ou \t. Para inserir uma \ na string ela deve ser digitada dobrada. Assim o nome do arquivo deve ser ":\\music.lib"

Marcelo, o que voce me falou deu certo porém eu printei a variavel "caminho" para ver por que não esta excluindo o arquivo e me surpreendi ao ver que a variavel concatenou os valores com quebra de linha.

Veja bem:

Se eu digitar F para a variável LETRA, o resultado final de CAMINHO é

strcpy(caminho, letra);

strcat(caminho, "\\:MUSIC.LIB");

printf("%s", caminho);

---------------------------------

F

\\:MUSIC.LIB

(com a quebra de linha, entende?)

Como eu posso resolver isso? =[

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...