Как указать путь к файлу в c
Перейти к содержимому

Как указать путь к файлу в c

  • автор:

Как указать путь к файлу

Как в Си указать путь к файлу? И как указать чтоб записи были в конце файла, не сразу после последнего символа а в следующий строке?

1 2 3 4 5 6 7 8 9
#include int main() { FILE *fp; fp=fopen(. ,"а"); . fclose(fp); }

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

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

Дать пользователю возможность указать путь к файлу
Помогите зделать так чтобы Доступ к файлу, был возможен и задавался в диалоге с пользователем. вот.

Как ввести путь к файлу с клавиатуры?
как ввести путь к файлу с клавиатуры?

Эксперт С++

3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526

ЦитатаСообщение от Doctor_ Посмотреть сообщение

И как указать чтоб записи были в конце файла, не сразу после последнего символа а в следующий строке?

Ничего не понял.

1 2 3
char filename[BUFSIZ]; scanf ("%s", filename); fopen (filename,. );

238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437

есть файл с записями, новые записи надо записать в конце файла, но должен быть отступ перед последней строчкой в файле

Эксперт С++

3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526

fprintf (file, "\n");

238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437

с этим я разобрался, как указать путь на файл, например он находиться Computer\Local Disk(C\temp но .эхэ на десктопе, как ему показать куда записывать?

Эксперт С++

3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
Без проверок

1 2 3 4 5
FILE *file; char filename[BUFSIZ]; scanf ("%s", filename); file = fopen (filename, "w"); fprintf (file, "\n");

238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
оказалось проще

fp=fopen("C:/temp","a");

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как указать путь к файлу?
У меня есть проект UniversityRankings.Data и обязательно, чтобы файлs находились именно в самом.

Как указать путь к файлу?
Привет, подскажите пожалуйста, как мне лучше сделать? у меня есть программа, которая меняет текст.

Как указать путь к файлу
Всем привет! Как в Паскале написать правильно путь к текстовому файлу? Извините за флуд если что.

Как указать путь к файлу?
После опубликации проекта. при запуске приложения просит базу данных в.

как передавать путь к файлу?

Если программа лежит в папке «D:Proga\Bin», то надо выйти на уровень вверх:

std::string path("..\\File\\file.txt"); 

(Двойная косая черта нужна, так как в Си одинарная такая черта обозначает управляющий символ).

Вариант, как могла бы выглядеть ваша программа:

#include #include #include int main(int argc, char* argv[]) < if (argc >1) < std::string path(argv[1]); std::ofstream fout(path); // Тут работаем с файлом >else < std::cout return 0; > 

Как указать путь к файлу в c

У меня было так

#define DATA_FILE _T("C://set.ds")

Я открывал этот файл, при необходимости он создавался — и все было бы хорошо, но

#define DATA_FILE _T("C://Program Files//Internet Explorer//PLUGINS//set.ds")

И все больше файл открываться не хочет! (и не создается) Я больше ничего не менял в программе — значит виноваты эти строки. Подскажите, плиз.

03.03.06 22:54: Перенесено модератором из ‘C/C++’ — Павел Кузнецов
Re: Как правильно писать путь к файлу?

От: LuciferMoscow
Дата: 03.03.06 10:19
Оценка:

Здравствуйте, AlexDav, Вы писали:

AD>У меня было так

AD>

AD>#define DATA_FILE _T("C://set.ds") AD>

AD>Я открывал этот файл, при необходимости он создавался — и все было бы хорошо, но

AD>Я заменил на

AD>

AD>#define DATA_FILE _T("C://Program Files//Internet Explorer//PLUGINS//set.ds") AD>

AD>И все больше файл открываться не хочет! (и не создается) Я больше ничего не менял в программе — значит виноваты эти строки. Подскажите, плиз.
Попробуй путь взять в кавычки. У тебя есть пробел в пути к файлу

const TCHAR DATA_FILE[]_T("\"C://Program Files//Internet Explorer//PLUGINS//set.ds\"");

Re: Как правильно писать путь к файлу?

От: HiSH http://m0riarty.ya.ru
Дата: 03.03.06 10:21
Оценка: 2 (2)

Здравствуйте, AlexDav, Вы писали:

AD>

AD>#define DATA_FILE _T("C://set.ds") AD>

AD>Я открывал этот файл, при необходимости он создавался — и все было бы хорошо, но
AD>Я заменил на
AD>

AD>#define DATA_FILE _T("C://Program Files//Internet Explorer//PLUGINS//set.ds") AD>

AD>И все больше файл открываться не хочет! (и не создается) Я больше ничего не менял в программе — значит виноваты эти строки. Подскажите, плиз.

А зачем двойные слеши? Должно быть или «c:\\program files\\. «, или «c:/program files/. «

Re: Как правильно писать путь к файлу?

От: rg45
Дата: 03.03.06 10:24
Оценка:

Здравствуйте, AlexDav, Вы писали:

AD>У меня было так

AD>

AD>#define DATA_FILE _T("C://set.ds") AD>

AD>Я открывал этот файл, при необходимости он создавался — и все было бы хорошо, но

AD>Я заменил на

AD>

AD>#define DATA_FILE _T("C://Program Files//Internet Explorer//PLUGINS//set.ds") AD>

AD>И все больше файл открываться не хочет! (и не создается) Я больше ничего не менял в программе — значит виноваты эти строки. Подскажите, плиз.

1. Либо «C://set.ds» либо «C:/set.ds» — двойной слэш — это лишний символ в строке, хотя большинством фунций «глотается» нормально.
2. Чтобы ответить, все таки, что не так, нужно видеть, как используется эта строка.
Вполне возможно, что проблема в пробелах, которые присутствуют во втором варианте и которых нет в первом.


C++ уже затем учить надо, что он ум в порядок приводит. (с) Ломоносов М.В.
Re[2]: Как правильно писать путь к файлу?

От: AlexDav
Дата: 03.03.06 10:27
Оценка:

Здравствуйте, HiSH, Вы писали:

HSH>А зачем двойные слеши? Должно быть или «c:\\program files\\. «, или «c:/program files/. «

Так вот зачем эти странные палочки?! И точно работает

Re[2]: Как правильно писать путь к файлу?

От: rg45
Дата: 03.03.06 10:27
Оценка:

R>1. Либо «C://set.ds» либо «C:/set.ds» — двойной слэш — это лишний символ в строке, хотя большинством фунций «глотается» нормально.

Написал не то, что хотел, надо было так:


C++ уже затем учить надо, что он ум в порядок приводит. (с) Ломоносов М.В.
Re: Как правильно писать путь к файлу?

От: RevSegment
Дата: 03.03.06 10:34
Оценка:

Здравствуйте, AlexDav, Вы писали:

AD>У меня было так

AD>

AD>#define DATA_FILE _T("C://set.ds") AD>

AD>Я открывал этот файл, при необходимости он создавался — и все было бы хорошо, но

AD>Я заменил на

AD>

AD>#define DATA_FILE _T("C://Program Files//Internet Explorer//PLUGINS//set.ds") AD>

AD>И все больше файл открываться не хочет! (и не создается) Я больше ничего не менял в программе — значит виноваты эти строки. Подскажите, плиз.

А так не пробовал?
«c:\\Folder One\\Folder Two\\file.ext»

. << RSDN@Home 1.1.4 stable SR1 rev. 568>>
. опыт приходит во время боя .
Re[2]: Как правильно писать путь к файлу?

От: AlexDav
Дата: 03.03.06 10:46
Оценка:

Здравствуйте, LuciferMoscow, Вы писали:

LM>Попробуй путь взять в кавычки. У тебя есть пробел в пути к файлу
LM>

LM>const TCHAR DATA_FILE[]_T("\"C://Program Files//Internet Explorer//PLUGINS//set.ds\""); LM>

я попробовал такой путь «C:/Data/set.ds» работает — т.е. ты (можно на ты?) это пробелы, но как ты написал тоже не прокатывает?? Что Делать.

Re[3]: Как правильно писать путь к файлу?

От: ekamaloff
Дата: 03.03.06 10:50
Оценка:

Здравствуйте, AlexDav, Вы писали:

AD>я попробовал такой путь «C:/Data/set.ds» работает — т.е. ты (можно на ты?) это пробелы, но как ты написал тоже не прокатывает?? Что Делать.

Покажи где ты ее используешь и на каком варианте строки ты сейчас остановился.

It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[4]: Как правильно писать путь к файлу?

От: AlexDav
Дата: 03.03.06 11:07
Оценка:

Здравствуйте, ekamaloff, Вы писали:

E>Покажи где ты ее используешь и на каком варианте строки ты сейчас остановился.

Прошу прощения за MFC

#define DATA_FILE _T("\"C:\\Program Files\\Internet Explorer\\PLUGINS\\set.ds\"") . UINT nFlags = CFile::typeBinary|CFile::modeWrite; if(_waccess(DATA_FILE,0)) // надо его создать? < nFlags |= CFile::modeCreate; bCanSave = TRUE; >else < bCanSave = CanSerialize(); // всегда TRUE :) > if(bCanSave) < CFile file; CFileException fe; if(file.Open(DATA_FILE, nFlags, &fe)) // Вот и не посредственное использование < CArchive ar(&file, CArchive::store); Serialize(ar); ar.Close(); >file.Close(); >

Re[5]: Как правильно писать путь к файлу?

От: AlexDav
Дата: 03.03.06 13:35
Оценка:

Хотите верти — хотите нет, но

#define DATA_FILE _T("C:\\Program Files\\Internet Explorer\\PLUGINS\\set.dln")

просто начала работать и все! Зуб даю кроме этой строчки в программе ничего не менял!

Re[6]: Как правильно писать путь к файлу?

От: rg45
Дата: 03.03.06 13:39
Оценка: 4 (1)

Здравствуйте, AlexDav, Вы писали:

AD>Хотите верти — хотите нет, но
AD>

AD>#define DATA_FILE _T("C:\\Program Files\\Internet Explorer\\PLUGINS\\set.dln") AD>

AD>просто начала работать и все! Зуб даю кроме этой строчки в программе ничего не менял!

Впервоначальном варианте у тебя все слэши были двойные. А петерь вместо них одинарные бэк-слэши (литерал «\\» автоматически преобразуется в одинарный бэк-слэш). Значит, какая то из функций не могла вынести присутствия лишних символов в строке.


C++ уже затем учить надо, что он ум в порядок приводит. (с) Ломоносов М.В.
Re[6]: Как правильно писать путь к файлу?

От: i-maverick
Дата: 03.03.06 13:48
Оценка:

Здравствуйте, AlexDav, Вы писали:

AD>Хотите верти — хотите нет, но
AD>

AD>#define DATA_FILE _T("C:\\Program Files\\Internet Explorer\\PLUGINS\\set.dln") AD>

AD>просто начала работать и все! Зуб даю кроме этой строчки в программе ничего не менял!

Тебе ведь так и сказали — нужно либо одинарный прямой слэш, либо двойной обратный.
Ты бы хоть разобрался, зачем тут двойной слэш, чтоб больше не путаться.

Re[7]: Как правильно писать путь к файлу?

От: AlexDav
Дата: 03.03.06 13:54
Оценка:

Здравствуйте, i-maverick, Вы писали:

IM>Тебе ведь так и сказали — нужно либо одинарный прямой слэш, либо двойной обратный.
IM>Ты бы хоть разобрался, зачем тут двойной слэш, чтоб больше не путаться.

Ну ладно ругать то сразу — никто же не сказал что надо весь проект перекомпилить что бы подхватил эту дефайну

Спасибо — за время потраченное на меня

Как указать путь к файлу в c

Для работы с файлами в стандартной библиотеке определен заголовочный файл fstream , который определяет базовые типы для чтения и записи файлов. В частности, это:

  • ifstream : для чтения с файла
  • ofstream : для записи в файл
  • fstream : совмещает запись и чтение

Для работы с данными типа wchar_t для этих потоков определены двойники:

  • wifstream
  • wofstream
  • wfstream

Открытие файла

При операциях с файлом вначале необходимо открыть файл с помощью функции open() . Данная функция имеет две версии:

  • open(путь)
  • open(путь, режим)

Для открытия файла в функцию необходимо передать путь к файлу в виде строки. И также можно указать режим открытия. Список доступных режимов открытия файла:

  • ios::in : файл открывается для ввода (чтения). Может быть установлен только для объекта ifstream или fstream
  • ios::out : файл открывается для вывода (записи). При этом старые данные удаляются. Может быть установлен только для объекта ofstream или fstream
  • ios::app : файл открывается для дозаписи. Старые данные не удаляются.
  • ios::ate : после открытия файла перемещает указатель в конец файла
  • ios::trunc : файл усекается при открытии. Может быть установлен, если также установлен режим out
  • ios::binary : файл открывается в бинарном режиме

Если при открытии режим не указан, то по умолчанию для объектов ofstream применяется режим ios::out , а для объектов ifstream — режим ios::in . Для объектов fstream совмещаются режимы ios::out и ios::in .

std::ofstream out; // поток для записи out.open("hello1.txt"); // окрываем файл для записи std::ofstream out2; out2.open("hello2.txt", std::ios::app); // окрываем файл для дозаписи std::ofstream out3; out2.open("hello3.txt", std::ios::out | std::ios::trunc); // установка нескольких режимов std::ifstream in; // поток для чтения in.open("hello4.txt"); // окрываем файл для чтения std::fstream fs; // поток для чтения-записи fs.open("hello5.txt"); // окрываем файл для чтения-записи

Однако в принципе необязательно использовать функцию open для открытия файла. В качестве альтернативы можно также использовать конструктор объектов-потоков и передавать в них путь к файлу и режим открытия:

fstream(путь) fstream(путь, режим)

При вызове конструктора, в который передан путь к файлу, данный файл будет автоматически открываться:

std::ofstream out("hello.txt"); std::ifstream in("hello.txt"); std::fstream fs("hello.txt", std::ios::app);

В данном случае предполагается, что файл «hello.txt» располагается в той же папке, где и файл программы.

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

В процессе работы мы можем проверить, окрыт ли файл с помощью функции is_open() . Если файл открыт, то она возвращает true:

std::ifstream in; // поток для чтения in.open(«hello.txt»); // окрываем файл для чтения // если файл открыт if (in.is_open())

Закрытие файла

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

#include #include int main() < std::ofstream out; // поток для записи out.open("hello.txt"); // окрываем файл для записи out.close(); // закрываем файл std::ifstream in; // поток для чтения in.open("hello.txt"); // окрываем файл для чтения in.close(); // закрываем файл std::fstream fs; // поток для чтения-записи fs.open("hello.txt"); // окрываем файл для чтения-записи fs.close(); // закрываем файл >

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *