Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание пустого файла, средствами С++ 
V
    Опции темы
Dikey
Дата 25.10.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 6.3.2008
Где: Украина г.Изюм

Репутация: нет
Всего: нет



Мне нужно создать чистый файл с программы,как это сделать??

Код

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include "string.h"
using namespace std;
int copy_file(char *file_name,char *file_copy,int size);
int main() {
    int size;
    char file_name[81],file_copy[81];
    cout<<"Enter file name to copy: ";
    cin.getline(file_name,80);
    strcat(file_copy,file_name);
    strcat(file_copy,"_copy");
    cout<<"Enter file size: ";
    cin>>size;
    copy_file(file_name,file_copy,size);

    return 0;
}
int copy_file(char *file_name,char *file_copy,int size){
    int s=size-4;
    char pic_load[524288];
    fstream  fbin(file_name, ios::binary | ios::in | ios::out);
    fstream  fbincpy(file_copy, ios::binary | ios::in | ios::out);//Нужно создать файл с координатами и именем file_copy
    if (!fbin) {
        cout << "Could not open file ";
        return -1;
    }
    for (int i=0;i<=s;i++){
        fbin.seekp(i);
        fbin.read(reinterpret_cast<char*>(&pic_load[i]), sizeof(int));
    }
        fbin.close();
        for (int n=0;n<=s;n++){

        fbincpy.seekp(n);
        fbincpy.write(reinterpret_cast<char*>(&pic_load[n]), sizeof(int));
    }
    fbincpy.close();
    return 0;
}



Это сообщение отредактировал(а) Dikey - 25.10.2009, 12:45
PM MAIL WWW ICQ Skype   Вверх
niXman
Дата 25.10.2009, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

Репутация: нет
Всего: 0



Код

std::ofstream file("filename");
if ( !file ) {
   std::cerr << "Error!" << std::endl;
}


Это сообщение отредактировал(а) niXman - 25.10.2009, 12:52
--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
zim22
Дата 25.10.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Dikey @  25.10.2009,  12:44 Найти цитируемый пост)
Мне нужно создать чистый файл с программы,

ничего не понимаю (с) колобки
***
чистый файл нулевого размера? или ненулевого с записанными в него нулями?


--------------------
PM MAIL   Вверх
Dikey
Дата 25.10.2009, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 6.3.2008
Где: Украина г.Изюм

Репутация: нет
Всего: нет



Цитата(zim22 @ 25.10.2009,  12:53)
чистый файл нулевого размера? или ненулевого с записанными в него нулями?

Чистый,нулевого размера.
PM MAIL WWW ICQ Skype   Вверх
zim22
Дата 25.10.2009, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Dikey @  25.10.2009,  12:57 Найти цитируемый пост)
Чистый,нулевого размера.

см. пост niXman


--------------------
PM MAIL   Вверх
Dikey
Дата 25.10.2009, 13:05 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 6.3.2008
Где: Украина г.Изюм

Репутация: нет
Всего: нет



Цитата(niXman @ 25.10.2009,  12:51)
Код

std::ofstream file("filename");
if ( !file ) {
   std::cerr << "Error!" << std::endl;
}

я так понимаю,этот код открывает файл для записи и проверяет удалось ли открыть,а мне нужно создать файл.
PM MAIL WWW ICQ Skype   Вверх
zim22
Дата 25.10.2009, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Dikey @  25.10.2009,  13:05 Найти цитируемый пост)
я так понимаю

понимание с космоса черпаешь? доку читай.


--------------------
PM MAIL   Вверх
niXman
Дата 25.10.2009, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

Репутация: нет
Всего: 0



Цитата(Dikey @  25.10.2009,  11:05 Найти цитируемый пост)
этот код открывает файл для записи и проверяет удалось ли открыть

Создает файл для записи, и проверяет, удалось ли создать.

Если нужно только создать, и не использовать далее, добавь "file.close();"
--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
Dikey
Дата 25.10.2009, 13:15 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 6.3.2008
Где: Украина г.Изюм

Репутация: нет
Всего: нет



я вставил этот код в программу и никакого файла не создалось.
Допустим передается в file_copy  строка "1.xls_copy"
этот код ofstream file("1.xls_copy") ищет такой файл и открывает его для записи,а если его нет такого файла?
естесно он возвратит file=0 и условие выполнится и получится ошибка.
я дописал вот так

Код

ofstream file(file_copy);
    file.close();
    fstream  fbin(file_name, ios::binary | ios::in | ios::out);
    fstream  fbincpy(file_copy, ios::binary | ios::in | ios::out);


может это неправильно,условие ошибки исключил.
Но файл у меня не создается.

Это сообщение отредактировал(а) Dikey - 25.10.2009, 13:20
PM MAIL WWW ICQ Skype   Вверх
niXman
Дата 25.10.2009, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

Репутация: нет
Всего: 0



Цитата(Dikey @  25.10.2009,  11:15 Найти цитируемый пост)
этот код ofstream file("1.xls_copy") ищет такой файл и открывает его для записи

Цитата(niXman @  25.10.2009,  11:13 Найти цитируемый пост)
Создает файл для записи, и проверяет, удалось ли создать.



Цитата(Dikey @  25.10.2009,  11:15 Найти цитируемый пост)
Но файл у меня не создается.

Возможно из-за того что файл с этим именем уже есть, и при том открыт.
--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
Dikey
Дата 25.10.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 6.3.2008
Где: Украина г.Изюм

Репутация: нет
Всего: нет



такого файла нет,это 100%
погуглил и нашел вот такой код,который создает файл.
Код

int main() { 
 
FILE *f;                      //что за обьявление такое???
char *megafile = "new_file.txt"; 
char *megastring = "Hello world!!!"; 
 
f = fopen(megafile,"w");   //я так думаю это и есть команда создания чистого файла
 
for (int i = 0; i < 32768; i++) { 
 
fputs(megastring,f); //что за объект или функция???
 
} 
 
fclose; 
 
}

но рабочий он или нет??и если рабочий,как его можно прикрутить к моей программе?

Это сообщение отредактировал(а) Dikey - 25.10.2009, 14:11
PM MAIL WWW ICQ Skype   Вверх
zim22
Дата 25.10.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(niXman @  25.10.2009,  13:47 Найти цитируемый пост)
Возможно из-за того что файл с этим именем уже есть, и при том открыт.

можно сказать точно, в чём причина
Код

std::ifstream out("filed.txt");
if(!out) {   
  int e = errno;
  std::cerr << "file open failed: " << strerror(e) << std::endl;
}



--------------------
PM MAIL   Вверх
Dikey
Дата 25.10.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 6.3.2008
Где: Украина г.Изюм

Репутация: нет
Всего: нет



пишет вот такую ошибку

No such file or directory
нет такого файла или папки

Если создать такой файл вручную то ошибка исчезает.


Это сообщение отредактировал(а) Dikey - 25.10.2009, 14:40
PM MAIL WWW ICQ Skype   Вверх
zim22
Дата 25.10.2009, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Dikey @  25.10.2009,  14:26 Найти цитируемый пост)
нет такого файла или папки

всё правильно.
Цитата(zim22 @  25.10.2009,  14:12 Найти цитируемый пост)
std::ifstream out("filed.txt");

smile



--------------------
PM MAIL   Вверх
niXman
Дата 25.10.2009, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 4.7.2009

Репутация: нет
Всего: 0



zim22, Наверное ты хотел так:
Код

std::ofstream out("filed.txt");
if(!out) {   
  int e = errno;
  std::cerr << "file open failed: " << strerror(e) << std::endl;
}


Добавлено через 41 секунду
Dikey, Замени на std::ofstream
--------------------
if ( !c++ ) {   *power--;   this->wussiness += 10;}
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.