Изменение имени файла на локальном пути с помощью C File Handling? - PullRequest
0 голосов
/ 22 июля 2011
FILE *fp;
fp=fopen("c:\\test.txt", "r");
int fgetc (FILE *fp);
int fputc( int c, FILE *fp );

Есть ли способ изменить имя файла, которое уже существует на компьютере? Если да, то как мне ссылаться на файл? Используя указатель, мы можем ссылаться только на содержимое файла ... так есть ли метод, который ссылается на имя файла ??? Вот как у меня есть ссылки на файлы в C:

Ответы [ 3 ]

5 голосов
/ 22 июля 2011

Используйте функцию rename.

if (rename("c:\\test.txt", "c:\\newname.txt") == -1) {
    perror("rename of c:\\test.txt failed");
    exit(EXIT_FAILURE);
}

Редактировать: Как Томас указывает в своем ответе, вам также нужно #include <stdio.h>. Для получения дополнительной информации см. Справочное руководство на языке C.

Редактировать: rename является частью стандарта C (обе версии 1989 и 1999 годов).

3 голосов
/ 22 июля 2011

# include

int rename (const char * oldpath, const char * newpath);

2 голосов
/ 23 июля 2011

POSIX говорит, что rename () возвращает -1 при сбое, но стандарт C только говорит, что он возвращает ненулевое значение.(Оба говорят, что в случае успеха возвращает 0.) Если вы измените сравнение с == -1 на != 0, оно будет работать корректно как в POSIX, так и в не POSIX системах.

Обратите внимание, что #include <stdio.h> предоставляетобъявление для rename () и для всех других стандартных функций ввода / вывода);пытаться объявить их самостоятельно не нужно и может вызвать проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...