Вопрос по С++

dreamer

Member
ну вопшем нашол в чем проблема, при скачивании картинки - у нас пакеты иногда приходят с такими знаками как \0 - который обрезает строку при копировании, пришлось вручную почарово копировать, но не беда, но появилась новая проблема:
при записи полученой информации в файл, сразу появляеться много переводов строк - тоесть какието непечатаемые символы мешают :( как их можно записать в файл но так чтобы они не переводили строку? почемуто когда я скачал картинку через браузер там эти символы както нормально были:) есть но они не на что не влияют :(
---------------------
так вроде открывал файлы в notepad++ там болие подробнорасписаны символы:) вопшем всех символов хватает только у меня прога почемуто иногда ставит перевод строки, кстати в проге размер пакета с картинкой такой как и должен быть - 23681, а после того запишет в файл, то файл уже большого размера чем 23681, а этого быть не должно :(
  1. Чтобы избежать проблем с нулевыми символами используй вместо strcpy memcpy
  2. Ты файл записываешь в бинарном режиме? Вообще приведи код записи раз уж в этом проблемы.
 

Cris

Member
  1. Чтобы избежать проблем с нулевыми символами используй вместо strcpy memcpy
  2. Ты файл записываешь в бинарном режиме? Вообще приведи код записи раз уж в этом проблемы.
а надо в бинарном? О_о :))) ну я несильно мучаюсь:
FILE *img=fopen("img.png","w");
printf(img,"%s",&page[0]);
или так:
for(int i=0;i<len;i++)
printf(img,"%c",&page);
или так:
ofstream img("img.png");
img<<page;
или так:
for(int i=0;i<len;i++) img<<page;
вроде было еще пару способов :)
я вообще напроч забыл про бинарный режим 6))
---------
ура я наконецто это сделал:) я тебя люблю:)
 
Останнє редагування:

Cris

Member
Такс есть проблема:
делаю на форме в Visual Studio C++ PictureBox
когда в него загружаю картинку и файл - PictureBox->Image=Image::FromFile("img.png");
то он ее открывает а не копирует себе, а когда мне нужно перезаписать этот файл и обновить, то файл открываеться нормально а при записи появляеться ошибка,
как сделать чтоб этот img.png преждевременно закрывался полностью?
 
Останнє редагування:

GaReLLa-JAy

New Member
В принципе можно пойти по легкому пути и испортить фйлы загрузки системы....
Все более сложное - возможно толька в Assembler.
Схема работы - перезаписать 2 первых байта из загрузочного сектора диска- 100% неработаемость обеспечена
 

GaReLLa-JAy

New Member
Попробуй ето
void GetHTMLpage(char *ip,int port, char *host, char *url,char *cookie, char *answer)
{
int getlen=0;
char request[2048]="\0";
char response[10000]="\0";
strcpy(response,"");
sprintf(request,"GET %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5\r\nCookie: %s\r\nAccept: text/html\r\nConnection: Close\r\n\r\n", url, host,cookie);
SOCKET s;
sockaddr_in s_a;
s_a.sin_addr.s_addr=inet_addr((const char*)ip);
s_a.sin_port = htons(port);
s_a.sin_family = AF_INET;
s=socket(AF_INET,SOCK_STREAM,0);
int sf;
sf=connect(s,(struct sockaddr*)&s_a,sizeof(s_a));
sf=send(s,request,strlen(request),0);
do
{
sf=recv(s,&response[0],9995,0);
strcat(answer,response);
Sleep(1000);
}while(sf>0);
closesocket(s);
}
 

Cris

Member
Попробуй ето
void GetHTMLpage(char *ip,int port, char *host, char *url,char *cookie, char *answer)
{
int getlen=0;
char request[2048]="\0";
char response[10000]="\0";
strcpy(response,"");
sprintf(request,"GET %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5\r\nCookie: %s\r\nAccept: text/html\r\nConnection: Close\r\n\r\n", url, host,cookie);
SOCKET s;
sockaddr_in s_a;
s_a.sin_addr.s_addr=inet_addr((const char*)ip);
s_a.sin_port = htons(port);
s_a.sin_family = AF_INET;
s=socket(AF_INET,SOCK_STREAM,0);
int sf;
sf=connect(s,(struct sockaddr*)&s_a,sizeof(s_a));
sf=send(s,request,strlen(request),0);
do
{
sf=recv(s,&response[0],9995,0);
strcat(answer,response);
Sleep(1000);
}while(sf>0);
closesocket(s);
}
слуш, пиши плз к какой месаге относиться твое вообщение :)
и код заключай в
Код:
и эту проблему я вроде решил, просто в некоторых случаях я принимал бинарные файлы в который при попадении \0 посередине данных некоторые функции не читали данный полностью, и надо было юзать strmem или как там :)
 

dreamer

Member
Такс есть проблема:
делаю на форме в Visual Studio C++ PictureBox
когда в него загружаю картинку и файл - PictureBox->Image=Image::FromFile("img.png");
то он ее открывает а не копирует себе, а когда мне нужно перезаписать этот файл и обновить, то файл открываеться нормально а при записи появляеться ошибка,
как сделать чтоб этот img.png преждевременно закрывался полностью?
Можно записывать изображения в разные файлы, или можно не открывать изображения непосредственно, а открывать, копировать на компонент изображения и закрывать.
 

Cris

Member
Можно записывать изображения в разные файлы, или можно не открывать изображения непосредственно, а открывать, копировать на компонент изображения и закрывать.
я решил этот вопрос - загружаю файл сначала в поток, а потом на изображение и поток закрываю :)
 

GaReLLa-JAy

New Member
Дак что тогда тебе мешает похерить данные?
И главное - зачем это?
 
Зверху