2016-04-16 5 views
0

Я пытаюсь удалить файл с помощью remove(), и по какой-то причине он не работает, когда я даю ему путь в char *. Вот что у меня есть:C - remove() не удаляется с char *

#include<stdio.h> 

int main(int argc, char *argv[]){ 

    const char * toDie = "/home/User/Desktop/todie.txt"; 

    int status = remove(toDie); 

    if(status != 0){ 
     printf("Unable to delete the file\n"); 
    } 
} 

Он отлично работает, когда я бегу с

int status = remove("/home/User/Desktop/todie.txt"); 

Может кто-то пролить свет на это?

+0

вы должны проверить '' /home/User/Desktop/todie.txt'', потому что программа выглядит нормально. – Michi

+0

Когда функция не работает, проверьте значение ['errno'] (http://en.cppreference.com/w/c/error/errno), используя либо [' perror'] (http: //en.cppreference .com/w/c/io/perror) или ['strerror'] (http://en.cppreference.com/w/c/string/byte/strerror). –

+1

@ Michi имя файла toDie, а не todie! grrr .... Должен ли я удалить вопрос? – user5646514

ответ

0

Вы должны проверить, существует ли этот файл в первую очередь, или если вы указали правильный путь или правильное имя для этого файла.

Попробуйте это:

#include<stdio.h> 
#include<stdlib.h> 

int main(void){ 

    const char * toDie = "/home/User/Desktop/todie.txt"; 

    FILE *check = fopen(toDie, "r"); 

    if(!check){ 
     printf("There is no file with that name\n"); 

    } 

    int status = remove(toDie); 

    if(status != 0){ 
     printf("Unable to delete the file\n"); 
     exit(1); 
    }else{ 
     printf("File removed successfully"); 
    } 
} 

Вероятно, вы заметили, что я изменился:

int main(int argc, char *argv[]){} 

с:

int main(void){} 

Потому что, если вы запустите эту программу без аргументов, чем там не требуется:

(int argc, char *argv[]) 
+0

Спасибо! Я обязательно начну делать это :) – user5646514

+0

Если вы чувствуете, что этот ответ был в порядке, примите его. – Michi

+0

Мне пришлось ждать 3 минуты по какой-то причине – user5646514