Ошибка удаления и переименования файла - PullRequest
1 голос
/ 20 декабря 2011

Я изучаю C и пытаюсь переименовать и удалить файл.Это мой код:

    fclose(satis);
    if(!remove("satis.txt"))
        printf("file deleting error\n");
    fclose(gecicisatis);        
    if(!rename("gecicisatis.txt", "satis.txt"))
        printf("file rename error\n");

Это заголовок моего .cpp файла:

#include<stdio.h>
#include<locale.h>
#include<string.h>
#include<windows.h>
#include<conio.h>

Во время отладки не было ошибок.Но это вывод:

file deleting error
file rename error

Если вам нужно, это весь мой код: http://pastebin.com/kNY0y2xz (строки 157 до 162)

Это наша домашняя работа, поэтому я должен использоватьтекстовый файл.Я должен решить почему удаление и удаление файла возвращает ошибку. Можете ли вы помочь мне просто решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2011

remove возвращает 0 в случае успеха. Так что вам нужно изменить ваше состояние в if. Кроме того, всякий раз, когда вы сталкиваетесь с ошибкой, лучше вызвать функцию perror, которая выведет причину ошибки:

if(remove("satis.txt"))
   perror("File deletion failed\n");

И то же самое происходит с функцией rename.

Поскольку вы предоставляете только имя файла, а не путь, предполагается, что файл существует в каталоге, из которого был запущен исполняемый файл (при условии, что вы не меняете pwd процесса). Если это не так, вам придется передать путь, который может быть как относительным, так и абсолютным.

0 голосов
/ 20 декабря 2011

Нулевое значение возвращается, если файл удален или переименован успешно .


Вы должны изменить свой чек на:

if( remove("satis.txt") != 0 )
    printf("File deleting error\n");

if( rename("gecicisatis.txt", "satis.txt") != 0 )
    printf("File rename error\n");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...