Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
[c/c++] Новичкам: задаем вопросы |

26.05.2007, 14:21
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
[c/c++] Новичкам: задаем вопросы
В этой специальной теме новички могут задавать "элементарные" вопросы по синтаксису и прочим начинаниям в языке.
Последний раз редактировалось _Great_; 26.05.2007 в 14:26..
|
|
|

27.05.2007, 17:58
|
|
Новичок
Регистрация: 11.02.2007
Сообщений: 10
Провел на форуме: 43734
Репутация:
4
|
|
Как заставить программу читая файл скрадывакать каждую строку в определенную переменную? (1 строка = 1 переменная)
|
|
|

27.05.2007, 18:02
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
Сообщение от N1K
Как заставить программу читая файл скрадывакать каждую строку в определенную переменную? (1 строка = 1 переменная)
fgets() читает строчку из файла, если используется RTL у тебя
|
|
|

27.05.2007, 18:16
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
27.05.2007 18:14:51, KEZ
KEZ:
Код:
#include <stdio.h>
int main(int argc, char* argv[])
{
char buf[256];
FILE *f = fopen( "C:\\1.txt", "r" );
while (fgets( buf, 255, f ))
strncpy( string, buf, 255 );
fclose( f );
return 0;
}
где string - очередная переменная в которую положится очередная строка
27.05.2007 18:15:00, KEZ
запости *** я забанен(
Последний раз редактировалось _Great_; 27.05.2007 в 18:33..
|
|
|

27.05.2007, 18:31
|
|
Участник форума
Регистрация: 28.04.2007
Сообщений: 239
Провел на форуме: 2140476
Репутация:
161
|
|
Как программно с помощью с++ обращаться по протоколу http. Как к простым файлам?
пример:
FILE *f = fopen( "http://sait.com", "r" );
может вопрос мой некоректен , но я думаю поймут )))
|
|
|

27.05.2007, 18:34
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
Сообщение от ultimatum
Как программно с помощью с++ обращаться по протоколу http. Как к простым файлам?
пример:
FILE *f = fopen( "http://sait.com", "r" );
может вопрос мой некоректен , но я думаю поймут )))
нет, либо UrlDownloadToFile, либо открыть сокет вручную
от кеза:
27.05.2007 18:43:17, KEZ
#include <stdio.h>
#include <winsock2.h> // хедер с описанием wsa ф-ий
// для ms vc++6.0 и др - подключаем lib'у с импортами wsa ф-ий
#pragma comment( lib, "wsock32.lib" )
int main(int argc, char* argv[])
{
char request[1024*5]; // буффер под запрос
char response[1024]; // буффер под ответ
sockaddr_in s_a;
WSADATA wd; // структура WSADATA
WSAStartup( MAKEWORD( 2, 2 ), &wd ); // инициализируем wsa
SOCKET s = socket( AF_INET, SOCK_STREAM, 0 ); // создаем сокет
if (s == INVALID_SOCKET) return 255; // если ошибка - выход
s_a.sin_addr.s_addr = inet_addr( "89.108.80.80" ); // айпи сервера, в данном случае - античат.ру
s_a.sin_port = htons( 80 ); // порт сервера
s_a.sin_family = AF_INET;
if (connect( s, (struct sockaddr*)&s_a, sizeof( s_a ) ) == SOCKET_ERROR) return 255; // SOCKET_ERROR - невозможно подключится к сереверу
char url[] = "/"; // страница
char host[] = "antichat.ru"; // хост
// формируем запрос
sprintf( request, "GET %s HTTP/1.1\r\nHost: %s\r\nConnection: Close\r\n\r\n", url, host );
send( s, request, strlen( request ), 0 ); // послать запрос
recv( s, response, 1023, 0 ); // максимум получить 1023 байта
printf( "%s\r\n", response ); // вывести ответ на экран
closesocket( s ); // закрываем сокет
WSACleanup(); // деинициализируем wsa
return 0;
}
27.05.2007 18:45:56, KEZ
отпиши от меня кроме кода вот что
27.05.2007 18:46:28, KEZ
"далее обрезай шапку ответа сервера (HTTP/1.1 200 OK и т.п.), все оставшееся - будет то, что вернул сервер по запрошеному адресу, например /1.txt. Другие варианты с winapi - InternetReadFile(), UrlDownloadToFile() см.
msdn..."
27.05.2007 18:45:09, KEZ
"альт. вариант - InternetReadFile()"
27.05.2007 18:45:12, KEZ
отпиши
Последний раз редактировалось _Great_; 27.05.2007 в 18:52..
|
|
|

27.05.2007, 19:00
|
|
Участник форума
Регистрация: 28.04.2007
Сообщений: 239
Провел на форуме: 2140476
Репутация:
161
|
|
спасибо KEZ и _Great_ ))) дальше я сам поисом
|
|
|

27.05.2007, 19:15
|
|
Новичок
Регистрация: 11.02.2007
Сообщений: 10
Провел на форуме: 43734
Репутация:
4
|
|
Сообщение от _Great_
27.05.2007 18:14:51, KEZ
KEZ:
Код:
#include <stdio.h>
int main(int argc, char* argv[])
{
char buf[256];
FILE *f = fopen( "C:\\1.txt", "r" );
while (fgets( buf, 255, f ))
strncpy( string, buf, 255 );
fclose( f );
return 0;
}
где string - очередная переменная в которую положится очередная строка
27.05.2007 18:15:00, KEZ
запости *** я забанен(
Короче, смысл проги в том, что... а, ладно щас исходник кину:
Код:
#include <stdio.h>
#include <stdafx.h>
#include <iostream>
#include <string.h>
using namespace std;
class massive_s
{
public:
massive_s (char*, int, float);
void show_data (void);
/* void fetch (int); */
private:
char name[64];
int marck;
float m_marck;
};
massive_s::massive_s (char *name, int marck, float m_marck)
{
strcpy (massive_s::name,name);
massive_s::marck = marck;
massive_s::m_marck = m_marck;
if (m_marck > 3.5)
strcat (massive_s::name," IIEPEBEDEH");
else
strcat (massive_s::name," HE IIEPEBEDEH");
}
void massive_s::show_data (void)
{
cout <<" Name: "<< name << endl;
cout <<" Ocenka: "<< marck << endl;
cout <<" Cpednjaja ocenka: " << m_marck << endl;
}
int main (void)
{
/* здесь нужен код, который считывал бы из вайла построчно переменные, и формировал запрос в конструктор типа:
massive_s w1(string1, int1, float1); где стринг, интеджер и флоат - вытащенные из файла переменные (стринг - первая строка, интеджер - 2 и флоат - 3, причем в файле продобных строк 100 (т.е. они чередуюццо:
Вася Пупкин
1
3.3
Миша Ипачевский-Распиндосов
4
4.5
Саша шнуровской
5
3.5
)
*/
}
|
|
|

30.05.2007, 17:37
|
|
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
Провел на форуме: 3371897
Репутация:
1462
|
|
Вопрос: idHTTPServer ... сохранение удаленного файла на винте(через браузер)...
TFileStream *fs=new TFileStream(MyFile,fmOpenRead);
try
{
ResponseInfo->ResponseNo=200;
ResponseInfo->ContentLength= fs->Size;
ResponseInfo->ContentStream=fs;
ResponseInfo->Headers->Add("Content-Disposition: attachment; filename=MyFile.exe\r\n");
...
Сохраняет файл , но в начале файла записывает инфо с запроса (Server: Indy, Content-Length и др) , что в свою очредь убивает его работоспособность...
как сделать ,чтоб файл нормально записался???
|
|
|

30.05.2007, 23:12
|
|
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
Провел на форуме: 3371897
Репутация:
1462
|
|
у меня немного по сложнее трабл , я отсылаю файл по запросу, а не принимаю ...
Принимает же обычный браузер...
считываю же файл для отправки сразу потоком:
TFileStream *fs=new TFileStream(MyFile,fmOpenRead);
ResponseInfo->ContentStream=fs; //где ResponseInfo - ответ на запрос...
забавно, но если убрать строчку :
ResponseInfo->Headers->Add("Content-Disposition: attachment; filename=MyFile.exe\r\n");
, то файл сохранится правильно, но под кривым именем и без расширения...
|
|
|
|
 |
|
TEST QR: []
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|