Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   [c/c++] Новичкам: задаем вопросы (https://forum.antichat.xyz/showthread.php?t=40894)

_Great_ 26.05.2007 14:21

[c/c++] Новичкам: задаем вопросы
 
В этой специальной теме новички могут задавать "элементарные" вопросы по синтаксису и прочим начинаниям в языке.

N1K 27.05.2007 17:58

Как заставить программу читая файл скрадывакать каждую строку в определенную переменную? (1 строка = 1 переменная)

_Great_ 27.05.2007 18:02

Цитата:

Сообщение от N1K
Как заставить программу читая файл скрадывакать каждую строку в определенную переменную? (1 строка = 1 переменная)

fgets() читает строчку из файла, если используется RTL у тебя

_Great_ 27.05.2007 18:16

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
запости *** я забанен(

ultimatum 27.05.2007 18:31

Как программно с помощью с++ обращаться по протоколу http. Как к простым файлам?
пример:
FILE *f = fopen( "http://sait.com", "r" );
может вопрос мой некоректен , но я думаю поймут )))

_Great_ 27.05.2007 18:34

Цитата:

Сообщение от 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
отпиши

ultimatum 27.05.2007 19:00

спасибо KEZ и _Great_ ))) дальше я сам поисом

N1K 27.05.2007 19:15

Цитата:

Сообщение от _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
)
*/
}


Jes 30.05.2007 17:37

Вопрос: 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 и др) , что в свою очредь убивает его работоспособность...
как сделать ,чтоб файл нормально записался???

Jes 30.05.2007 23:12

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

считываю же файл для отправки сразу потоком:

TFileStream *fs=new TFileStream(MyFile,fmOpenRead);
ResponseInfo->ContentStream=fs; //где ResponseInfo - ответ на запрос...

забавно, но если убрать строчку :
ResponseInfo->Headers->Add("Content-Disposition: attachment; filename=MyFile.exe\r\n");
, то файл сохранится правильно, но под кривым именем и без расширения...


Время: 19:35