Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2012, 10:37   #1
BAH--zer
 
Регистрация: 31.10.2011
Сообщений: 3
Смущение fopen возвращает NULL.

Добрый день. Ситуация следующая - имеется сервер и клиент. Связываются они друг с другом через сокеты. Клиент отправляет серверу файл. Сервер в свою очередь принимает текст файла и записыает его в свой новоиспеченный файл. Проблема возникает в следующем: во время отправки именно *.exe файла, при открытии файла для записи функция fopen иногда возвращает NULL. Путем проб выяснилось что подобное происходит только если в проводнике Windows открыта папка содержащая файл в который идет запись.Компиль - Borland 2006 turbo c++, windows 7. С остальными типами файлов все вроде бы нормально. Вопрос - можно ли как нибудь с этим бороться?

Код:
void loadPartFile(int Space, char* Result,int RecvVal, int IdProc, SOCKET SocketClient)
    {//write file
    int SecSpace = Space+2, LentName=Result[SecSpace-1];
    AnsiString FileName;
    char TextFile[SizeBuff]={0};
    for(int i = 0; i<LentName; i++,SecSpace++)
        FileName=FileName+Result[SecSpace];
    for(int i=SecSpace+1,cur=0; i<=RecvVal;cur++,i++ )
        TextFile[cur]=Result[i];
    FILE *SendFile=NULL;
    //while (SendFile==NULL)
        SendFile = fopen(FileName.c_str(),"a+b");
    fwrite(TextFile, sizeof(char), RecvVal-5-FileName.Length(), SendFile);
    trace(IntToStr(IdProc)+">Отправка файла: Записаь в файл - "+FileName+".");
    fclose(SendFile);
    char Answer[SizeBuff]="Approve";
    Answer[7]='\0';
    send(SocketClient, Answer , sizeof(Answer)-1, 0);
    Response++;
    }
BAH--zer вне форума Ответить с цитированием
Старый 07.05.2012, 13:13   #2
BAH--zer
 
Регистрация: 31.10.2011
Сообщений: 3
По умолчанию

Решил следующим образом - постоянно храню открытые файлы в памяти программы. Клиенту передаю номер потока связанного с записываемым файлом.При получении сообщения беру из него номер файла и записываю туда всю инфу. Спасибо всем за помощь.
BAH--zer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
fopen Китос Общие вопросы C/C++ 1 29.10.2011 02:14
Ошибка с функцией fopen motorway PHP 0 29.07.2009 17:30
Открытие файла на чтение функция fopen bigturtle Общие вопросы C/C++ 4 28.01.2009 16:08
если поле Patr пусто или null то пустую строку возвращает azat БД в Delphi 5 01.02.2008 13:05
Профи помогите с этими fopen();fsave() FlooPy Общие вопросы C/C++ 6 22.11.2007 14:32