PDA

Просмотр полной версии : [c/c++] Новичкам: задаем вопросы


Страницы : 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

criz
20.04.2008, 16:14
Может так?
strcpy(message_buf[i], argv[i]);
:)
и вот этого, я думаю будет достаточно:
delete []message_buf;

ZipaCna
20.04.2008, 16:38
Может так?
strcpy(message_buf[i], argv[i]);
:)
и вот этого, я думаю будет достаточно:
delete []message_buf;


criz, извени конечно, но ты не прав...

strcpy(message_buf[i], argv[i]) - это опасная конструкция и она подвержена переполнению, так как не проверяет входящую строку на длинну...так что надо юзать именно strncpy.

delete []message_buf; - одного этого не достаточно, надо очиститть память и для каждого элемента...

criz
20.04.2008, 17:15
ясно :)
Просто ты указываешь sizeof(argv[argc]), а это 4 байта. Вот я и решил не ограничиваться 4мя байтами :rolleyes:

ZipaCna
20.04.2008, 17:37
ясно :)
Просто ты указываешь sizeof(argv[argc]), а это 4 байта. Вот я и решил не ограничиваться 4мя байтами :rolleyes:

кстате да спасибо , тут тоже ошибка надо было sizeof(argv[i])

но весь трабл не в этом ..... =((


при выделении памяти под элименты масива не зависимо от того что я передам в argv код

for(int u=0;argv[u] != NULL;u++)message_buf[u]=new char[sizeof(argv[u])];

выделяет по 4 байта.... попробуйте собрать этот исходник под виндой и скажите проблема такая же??

Forcer
20.04.2008, 17:59
argv[i] - указатель. sizeof от указателя = 4. Юзай strlen().

ZipaCna
20.04.2008, 20:01
argv[i] - указатель. sizeof от указателя = 4. Юзай strlen().

Спасибо ошибку понял. Все работает.

Loker
21.04.2008, 01:01
Ребят помогите.
Нужен любой код бинарного дерева ( чтоб добавлять, удалять редактировать.) На С++.
ПРосто любой рабочий, обыскал моно сказать все и ни как если есть у кого вылоите плз.

De-visible
21.04.2008, 01:40
_http://forum.vingrad.ru/forum/s/34d46f3f9f3c02ea59529320070694a3/topic-99013/anchor-entry1469467/0.html
_http://programmersforum.ru/showthread.php?p=92241
_http://alglib.sources.ru/sorting/heapsort.php
_http://forum.codenet.ru/showthread.php?t=44506 (паскаль, на всякий случай)

reversys
21.04.2008, 01:56
да set в STL используй!

Forcer
21.04.2008, 22:38
reversys
насколько я понимаю, ему нужно для обучения а не для работы. Или ты ему для обучения предлагаешь код этого stl-кого сета взять?
Loker
Если очень нужно, в среду могу написать, если будет время. А вообще - посмотри по ссылкам которые дали.

reversys
21.04.2008, 23:45
имел ввиду для работы.

criz
22.04.2008, 19:16
Как отправить tcp-пакет, с нужным мне флагом, например RST?

rem
22.04.2008, 19:19
тебе нужно рыть в сторону raw socket
google:
http://www.google.ru/search?aq=-1&oq=&complete=1&hl=ru&newwindow=1&q=raw+socket+tcp&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=lang_ru


вот например реализация в линухе:
http://www.securitylab.ru/poc/extra/222314.php

criz
22.04.2008, 20:15
1) Нужно ли мне заполнять ИП-заголовок? Мне ведь надо только тсп-пакет изменить...
2) Если я отправлю пакет с РСТ-флагом, то соединение завершится?

rem
23.04.2008, 15:18
http://www.lib.ru/TCPBOOK/

Здесь все что те понадобиться для правильного формирования пакетов, а задавая по 1 вопросу ты бушь долго учиться

krypt3r
23.04.2008, 15:28
1) Нужно ли мне заполнять ИП-заголовок? Мне ведь надо только тсп-пакет изменить...

А как тогда ось узнает, на какой ип отправлять пакет?

criz
23.04.2008, 20:51
Вот, есть такой алгоритм..в голове у меня :)
запускаю сниффер, он фильтрует пакеты. Если данные идут на микрософт.ру, то прога отправляет пакет с рст-флагом и соединение сбрасывается.
Я фантазер? :)

#urbaner
24.04.2008, 16:02
Доброго времени суток!Вот хотел освоить технику ини файлов на С++, вот код

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
TIniFile *ini;
ini = new TIniFile(ChangeFileExt( Application->ExeName, ".INI" ) );
ini->WriteInteger( "Form", "Top", Top );
ini->WriteInteger( "Form", "Left", Left );
ini->WriteString ( "Form", "Caption", Caption );
ini->WriteBool ( "Form", "InitMax",
WindowState == wsMaximized );
delete ini;

Но, он почему то не пашет, пишет UNDIFENED SYMBOL "TIniFile":(В чем дело?Кто подскажет?

Delimiter
24.04.2008, 16:12
2 criz //// не фантазер!

только даже не начинай использовать.... raw sock
потеряешь время, делай сразу на WinPCap
... винпикап продокументирован и примеры есть

os1r1s
24.04.2008, 16:15
#urbaner
подключи
#include <vcl.h>
#include <inifiles.hpp>

#urbaner
24.04.2008, 16:36
#urbaner
подключи
#include <vcl.h>
#include <inifiles.hpp>
Спасибо, подключил, РАБОТАЕТ!!! :)

Admin Derek
24.04.2008, 16:46
здрасте :) я тут новеньки ненаю куды эт вопрос писать исли не туды написал простите, дело вот в чём:
хотелось бы написать простенькую программу которрая при приходе сообщения на мою асю тутже отправляла ответ который я зааранее подготовил, вот вы пример на С++ покажите подробный а я потом сам, пж, зааранее благодарю :)

Vid0k
24.04.2008, 16:51
простенькая программка это Hello World
сорцов на си я не видел а про протокол можешь поичтать
здесь http://www.icqinfo.ru/protocol_v8.shtml

zythar
24.04.2008, 18:09
хотелось бы написать простенькую программу которрая при приходе сообщения на мою асю тутже отправляла ответ который я зааранее подготовил

тебе нужна программа или тебе нужно научиться кодить на Си?
если вариант первый то исчи в гугле или же на ачате словосочетание "icq bot".тут кажись были сорсы на перле или на РНР насколько я помню.
а если вариант второй то во первых научись кодить на си, потом прочитай протокол, потом пиши своего бота

ForNeVeR
24.04.2008, 20:11
-> Admin Derek
Программка для работы с ICQ только в первом приближении может считаться простенькой... Только если с окошком клиента взаимодействовать (т.к. в нём все эти фишки взаимодействия с протоколом уже реализованы). Я бы посоветовал ознакомиться с возможностями QIP SDK ( http://qip.ru ). Возможно, думаю, реализовать в качестве простецкого плагина к QIP'у.

criz
24.04.2008, 22:08
только даже не начинай использовать.... raw sock
потеряешь время, делай сразу на WinPCap

А чем плох вариант с raw-сокетами?
З.Ы. уже скачал dev-pack с winpcap.org =)

Delimiter
24.04.2008, 22:42
потому что никто не ответит на вопрос каким образом мелкософт блокирует роу сокеты.

роу сокеты - черный ящик дырки в который могут быть закрыты в любой момент апгрейдом

criz
25.04.2008, 19:46
Помогите разобраться как работает функция pcap_remoteact_close(). В сорцах winpcap'a я нашел только описание функции, а вот тело ее я не нашел.
З.Ы. она мне возвращает:
"The host you want to close the active connection is not known"

Amoura
25.04.2008, 22:17
Помогите разобраться как работает функция pcap_remoteact_close(). В сорцах winpcap'a я нашел только описание функции, а вот тело ее я не нашел.
З.Ы. она мне возвращает:

глянь тут:

__ftp://ftp.ausmac.net/disk1/security/packet-capture/winpcap/docs/man/html/pcap-new_8c-source.html#l01153

Vid0k
25.04.2008, 22:59
есть у кого сорцы на си кого нибудь регера мыл просто не могу разобраться
с запросами как передать параметрами как работать с куками?

De-visible
25.04.2008, 23:09
_http://forum.x-coder.ru/showthread.php?t=559

Vid0k
25.04.2008, 23:35
там на форуме даже не могут отличить сорцы Си от php
а мне хотелось бы на СИ

zythar
26.04.2008, 10:55
блин... стыдно не отличать сорсы си от сорсов пхп.
убейся ап стену

как пример. если есть декларация переменнных то Си.
если есть директивы #include то Си.
если есть <? или <?php то РНР.

criz
26.04.2008, 15:54
глянь тут:

__ftp://ftp.ausmac.net/disk1/security/packet-capture/winpcap/docs/man/html/pcap-new_8c-source.html#l01153
Все равно сложновато... Не могу понять, что я делаю не так...
Что нужно сделать перед вызовом функции pcap_remoteact_close()

Vid0k
26.04.2008, 15:57
блин... стыдно не отличать сорсы си от сорсов пхп.
убейся ап стену

как пример. если есть декларация переменнных то Си.
если есть директивы #include то Си.
если есть <? или <?php то РНР.
ты про кого

Kaimi
27.04.2008, 02:27
есть у кого сорцы на си кого нибудь регера мыл просто не могу разобраться
с запросами как передать параметрами как работать с куками?

Выполняешь браузером запросы при регистрации мыла, перехватываешь пакеты снифером, открываешь мануал по сокетам и шлешь запросы по образцу подставляя нужные тебе данные.

max_rebel
27.04.2008, 18:59
всем привт я полный ламерище в С вот немогу разобраться как сделать так чтоб после того как комп спрашивает моё имя он его выводил бы в начале текста и в конце:

#include <stdio.h>
int main()
{
char name[20];

printf("What is your name?\n");
scanf("%s",name);
printf(" Hello ,%s!\n",name); /* ну здесь вроде работает */
printf("\n");
printf(" Yesterday for the first time I started to learn C\n");
printf("which was very interesting. No big plans exept \n");
printf("trojans so far.But I have some more peacefule ideas\n ");
printf("as well\n");
printf("%40s","Thank you "); /* после you должно идти имя, ккжется имя не отображается из-за
%40s если это убрать и понатыкать пробелов тогда имя отображается,но мне из принципа надо чтоб имя отображалось и ари этом бы работало %40s*/
return(0);
}

zythar
27.04.2008, 19:11
чтобы знать как сделать так чтоб после того как комп спрашивает моё имя он его выводил бы в начале текста и в конце надо иметь мозги ясно?

хоть бы имел мозги скопипастить printf(" Hello ,%s!\n",name); и поменять там текст.

кароче сделай так. printf("Thank you, %s", name);
понял?
и вместо того чтобы просто копипастить код с книжки читай и понимай что там написано, ламарище как ты сам изволился выразиться про себя

z01b
27.04.2008, 19:14
всем привт я полный ламерище в С вот немогу разобраться как сделать так чтоб после того как комп спрашивает моё имя он его выводил бы в начале текста и в конце:

#include <stdio.h>
int main()
{
char name[20];

printf("What is your name?\n");
scanf("%s",name);
printf(" Hello ,%s!\n",name); /* ну здесь вроде работает */
printf("\n");
printf(" Yesterday for the first time I started to learn C\n");
printf("which was very interesting. No big plans exept \n");
printf("trojans so far.But I have some more peacefule ideas\n ");
printf("as well\n");
printf("%40s","Thank you "); /* после you должно идти имя, ккжется имя не отображается из-за
%40s если это убрать и понатыкать пробелов тогда имя отображается,но мне из принципа надо чтоб имя отображалось и ари этом бы работало %40s*/
return(0);
}


#include <stdio.h>
int main()
{
char name[20];

printf("What is your name?\n");
scanf("%s",name);
printf(" Hello ,%s!\n",name);
printf("\n");
printf(" Yesterday for the first time I started to learn C\n");
printf("which was very interesting. No big plans exept \n");
printf("trojans so far.But I have some more peacefule ideas\n ");
printf("as well\n");
printf("%s, Thank You",name);
return(0);

}

max_rebel
27.04.2008, 19:23
не меня наверно не поняли :
%40s - это там для того чтоб Thank you отображалось не по левому краю а в правом конце строки из 40 знаков. Ясен хер что без %40s всё работает=) чж не зря это написал)) Мне нужно чтоб слова Hello NAME отображалась в правой части строки - поэтому там столько пробелов! И в самом конце слова Than you NAME отображались бы в правой части строки - поэтому там написано %40s
Вот в этом и есть проблема

z01b
27.04.2008, 19:28
не меня наверно не поняли :
%40s - это там для того чтоб Thank you отображалось не по левому краю а в правом конце строки из 40 знаков. Ясен хер что без %40s всё работает=) чж не зря это написал)) Мне нужно чтоб слова Hello NAME отображалась в правой части строки - поэтому там столько пробелов! И в самом конце слова Than you NAME отображались бы в правой части строки - поэтому там написано %40s
Вот в этом и есть проблема

#include <stdio.h>
int main()
{
char name[20];

printf("What is your name?\n");
scanf("%s",name);
printf(" Hello ,%s!\n",name);
printf("\n");
printf(" Yesterday for the first time I started to learn C\n");
printf("which was very interesting. No big plans exept \n");
printf("trojans so far.But I have some more peacefule ideas\n ");
printf("as well\n");
printf("%40s, Thank You",name);

return(0);

}

max_rebel
27.04.2008, 19:30
иными словами если тупо жать пробел то всё будет рботать
-------------------------------------------------------------
printf(" Hello ,%s!\n",name);
-------------------------------------------------------------
а если вот так
---------------------------------------------------
printf("%40s","Thank you %s ,name");
--------------------------------------------------
то не работает=(

z01b
27.04.2008, 19:32
иными словами если тупо жать пробел то всё будет рботать
-------------------------------------------------------------
printf(" Hello ,%s!\n",name);
-------------------------------------------------------------
а если вот так
---------------------------------------------------
printf("%40s","Thank you %s ,name");
--------------------------------------------------
то не работает=(
я проверял, все работает.

max_rebel
27.04.2008, 19:33
Это работает,это я пробовал но мне надо вот так printf("%40s","Thank you %s ,name");
Чтобы имя было ПОСЛЕ "Thank you" и вся это фраза была бы в правом конце строки

z01b
27.04.2008, 19:37
Это работает,это я пробовал но мне надо вот так printf("%40s","Thank you %s ,name");
Чтобы имя было ПОСЛЕ "Thank you" и вся это фраза была бы в правом конце строки

#include <stdio.h>
int main()
{
char name[20];

printf("What is your name?\n");
scanf("%s",name);
printf(" Hello ,%s!\n",name);
printf("\n");
printf(" Yesterday for the first time I started to learn C\n");
printf("which was very interesting. No big plans exept \n");
printf("trojans so far.But I have some more peacefule ideas\n ");
printf("as well\n");
printf("Thank You,%40s",name);
return(0);

}

max_rebel
27.04.2008, 19:42
АГа почти то что нужно!=)но между ними не должно быть такого расстояния - короче эта фраза должна быть как бы под Hello NAME только в завершении текста

z01b
27.04.2008, 19:47
АГа почти то что нужно!=)но между ними не должно быть такого расстояния - короче эта фраза должна быть как бы под Hello NAME только в завершении текста

#include <stdio.h>
int main()
{
char name[20];

printf("What is your name?\n");
scanf("%s",name);
printf(" Hello ,%s!\n",name);
printf("\n");
printf(" Yesterday for the first time I started to learn C\n");
printf("which was very interesting. No big plans exept \n");
printf("trojans so far.But I have some more peacefule ideas\n ");
printf("as well\n");
printf("%40s"," ");
printf("Thank You,%s",name);
return(0);

}

Если правильно понял, то так.

max_rebel
27.04.2008, 19:51
О! Спасибо огромное! Всё как и было задумано....теперь бы вот ещё понять почему так правильно))

z01b
27.04.2008, 19:55
О! Спасибо огромное! Всё как и было задумано....теперь бы вот ещё понять почему так правильно))
printf("%40s"," "); // Выводим 40 проблеов, без знака конца строки
printf("Thank You,%s",name); // Выводим имя + thank you.

max_rebel
27.04.2008, 20:01
А для чего после запятой " " в строке printf("%40s"," "); ?

max_rebel
27.04.2008, 20:04
А кстати она закрывается если её запускать не из cmd =(Что подправить чтоб она не закрывалась?

iv.
27.04.2008, 20:05
А для чего после запятой " " в строке printf("%40s"," "); ?
Чтобы выводилось 40 пробелов. =\

А кстати она закрывается если её запускать не из cmd =(Что подправить чтоб она не закрывалась?
getch()

max_rebel
27.04.2008, 20:07
Т.е. то что между кавычками должно вывестись 40 раз? Я подставил туда А - 40 раз не вывелось на экран. И что исправить чтоб прога не закрывалась сразу же?

z01b
27.04.2008, 20:08
А для чего после запятой " " в строке printf("%40s"," "); ?
%40s = через сорок символов, вывести строку типа строка, которая ссылается на область память где записана " ". Вместо " ", мона было написать так
char blank[]=" ";
printf("%40s",blank);

PS Вообщето, %40 - округляет строку до 40 символов.

max_rebel
27.04.2008, 20:12
спасибо,мне пока ещё рановато такое=((ещё недели две три до такого уровня=(

Admin Derek
28.04.2008, 15:31
тебе нужна программа или тебе нужно научиться кодить на Си?
если вариант первый то исчи в гугле или же на ачате словосочетание "icq bot".тут кажись были сорсы на перле или на РНР насколько я помню.
а если вариант второй то во первых научись кодить на си, потом прочитай протокол, потом пиши своего бота

а есть примеры на С++ дайте ссылочку или напишите прям тут :) оч интересно...

zythar
28.04.2008, 15:47
для того чтобы написать примерчик на си или си++ нуно сначала изучить протокол (*
да и вряд ли кто нить напишет. лень все таки (*

хотя там все банально вроди. открываешь сокет. ну и пишешь туда и читаешь оттуда по протоколу. тоесть действия которые нуна делать не отличаются от языка к языку.

Admin Derek
28.04.2008, 15:56
лень все таки (*


неужели не кто не писал не когда ?? а где моно посмотреть ???

zythar
28.04.2008, 16:29
ну дак ты скачай сорсы бота на РНР потом переведи на Си

z01b
28.04.2008, 16:31
а есть примеры на С++ дайте ссылочку или напишите прям тут :) оч интересно...
Мэн, за тебя писать никто ничего не будет. Ты начни сам и когда возникнут траблы, выкладывай код и мы постораемся помочь.

ЗЫ Исходник брутера асек задохлика - http://zbrute.antichat.ru/zbrute.c

criz
28.04.2008, 21:33
Люди добрые, поможите мну
Не могу с pcap_remoteact_close() справиться, он у меня всегда выдает:
Цитата:The host you want to close the active connection is not known

z01b
28.04.2008, 21:45
Люди добрые, поможите мну
Не могу с pcap_remoteact_close() справиться, он у меня всегда выдает:
Код в студию, никто здесь не телепат =\

criz
28.04.2008, 21:48
Sorry :)

char buf[100] = " ";
...
pcap_remoteact_close("192.168.0.1", buf);

z01b
28.04.2008, 21:51
Sorry :)

char buf[100] = " ";
...
pcap_remoteact_close("192.168.0.1", buf);

А соединение, открывается без ошибок?

criz
28.04.2008, 21:57
т.е.? Я сначала отлавливаю сниффером ИП, потом вызываю pcap_remoteact_close().
Вот весь сорец(это первый вариант, некрасивый):

#include <conio.h>
#include <stdio.h>
#include <winsock2.h>

#include "head.h"
#include "inc/pcap.h"
#include "inc/remote-ext.h"

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "wpcap.lib")

#define MAX_PACKET_SIZE 0x10000
#define SIO_RCVALL 0x98000001
// Буфер для приёма данных
char Buffer[MAX_PACKET_SIZE]; // 64 Kb

//Структура заголовка IP-пакета

typedef struct IPHeader {
UCHAR iph_verlen; // версия и длина заголовка
UCHAR iph_tos; // тип сервиса
USHORT iph_length; // длина всего пакета
USHORT iph_id; // Идентификация
USHORT iph_offset; // флаги и смещения
UCHAR iph_ttl; // время жизни пакета
UCHAR iph_protocol; // протокол
USHORT iph_xsum; // контрольная сумма
ULONG iph_src; // IP-адрес отправителя
ULONG iph_dest; // IP-адрес назначения
} IPHeader;

SOCKET s; // Cлущающий сокет.
struct sockaddr_in dst; // Адрес хоста

char src[10];
char dest[10];
char ds[15];
unsigned short lowbyte;
unsigned short hibyte;

void main()
{
WSADATA wsadata;

HOSTENT* phe;
IN_ADDR sa1; //
DWORD opt = 1;

char buf[100] = " ";

char name[128];
unsigned long flag = 1;

WSAStartup(MAKEWORD(2,2), &wsadata);
s = socket( AF_INET, SOCK_RAW, 0);

gethostname(name, sizeof(name));
phe = gethostbyname( name );

ZeroMemory(&dst, sizeof(dst));

dst.sin_family = AF_INET;
dst.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr;

bind(s, (SOCKADDR *)&dst, sizeof(SOCKADDR));

ioctlsocket(s, SIO_RCVALL, &flag);

while( !_kbhit() )
{
int count;
count = recv( s, Buffer, sizeof(Buffer), 0 );

if( count >= sizeof(IPHeader) )
{
IPHeader* hdr = (IPHeader *)Buffer;
sa1.s_addr = hdr->iph_src;
sa1.s_addr = hdr->iph_dest;

printf(inet_ntoa(sa1));

if(strcmp(inet_ntoa(sa1), "192.168.0.1") == 0)
{
pcap_remoteact_close("192.168.0.1", buf);
printf("\n%s\n", buf);
}

printf("\n");

}
}

closesocket(s);
WSACleanup();
}

P(i)n*Fl0p1
28.04.2008, 22:51
Подскажие плиз адреса кнопок Подключения (соеденить) и отключения интернета)
хочу прогу написать которая сама будет через заданное время отключатьи подключать к инету

desTiny
28.04.2008, 23:07
Подскажие плиз адреса кнопок Подключения (соеденить) и отключения интернета)
хочу прогу написать которая сама будет через заданное время отключатьи подключать к инету
какие адреса? между 0x00000000 и 0x80000000...

P(i)n*Fl0p1
28.04.2008, 23:21
какие адреса? между 0x00000000 и 0x80000000...
угу :rolleyes:

criz
29.04.2008, 08:12
Как разорвать tcp-соединение? :)
З.Ы. перелопатил почти весь гугол, ничего конкретного не нашел :(
З.З.Ы. помогите, оччень надо :rolleyes:

krypt3r
29.04.2008, 08:34
отошли Tcp-пакет с флагом Rst

criz
29.04.2008, 09:25
вот, что получается:

struct tcp_header *tcp_hd;
struct IPHeader *ip_hd;

unsigned short int tcp_win;
unsigned long int tcp_ack;

int packet_len = ETH_HDRSIZE + IP_HDRSIZE + TCP_HDRSIZE;

unsigned char *packet = (unsigned char *)malloc(packet_len);

tcp_hd = (struct tcp_header *)(packet + ETH_HDRSIZE + IP_HDRSIZE);
ip_hd = (struct ip_hd *)(packet + ETH_HDRSIZE + IP_HDRSIZE);


ip_hd->iph_verlen = 4;
ip_hd->iph_tos = 0;
ip_hd->iph_id = htons(55555);
ip_hd->iph_offset = htons(0x4000);
ip_hd->iph_ttl = 128;
ip_hd->iph_protocol = 6;
ip_hd->iph_xsum = 0;
ip_hd->iph_dest = inet_addr("192.168.0.1");

/* Set tcp header */

tcp_hd->tcp_src = htons(80);
tcp_hd->tcp_dst = htons(80);
tcp_hd->tcp_seq = htonl(tcp_ack + tcp_win);
tcp_hd->tcp_ack = 0;
tcp_hd->tcp_res = 0;
tcp_hd->tcp_off = 5;
tcp_hd->tcp_flags = TCP_RST;
tcp_hd->tcp_win = 0;
tcp_hd->tcp_sum = 0;
tcp_hd->tcp_urp = 0;

потом делаю sendto на нужный ИП

criz
29.04.2008, 20:07
Кто подскажет где ошибка, тому дам плюсег :)

brasco2k
29.04.2008, 20:34
Как в C# определить является ли чисо четным?

z01b
29.04.2008, 20:37
Как в C# определить является ли чисо четным?
if (number%2==0){ номер четный}

brasco2k
29.04.2008, 20:39
Как в C# определить является ли чисо четным?
Все спасибо не надо разобрался сам :

if (i % 2 == 0)

desTiny
29.04.2008, 20:41
Все спасибо не надо разобрался сам :

if (i % 2 == 0)
Не помню как, но как-то так вроде быстрее...
if (i >> 1 << 1 = i)

а на асме так точно:
//число в еаксе
shr eax
jc _чётное...

De-visible: а на DELPHI >>If (i mod 2)=0 then<< + ;)

criz
29.04.2008, 22:29
Товарищи, как мне закрыть/сбросить tcp-соединение??? У меня ни с роу-сокетами, ни с winpcap'ом не получается =((
З.Ы. Я наверно получу сейчас либо предупреждение, либо сразу бан... :)

z01b
29.04.2008, 22:39
Товарищи, как мне закрыть/сбросить tcp-соединение??? У меня ни с роу-сокетами, ни с winpcap'ом не получается =((
З.Ы. Я наверно получу сейчас либо предупреждение, либо сразу бан... :)
http://www.nestor.minsk.by/sr/2004/01/40114.html

criz
29.04.2008, 22:44
Так, задам иначе вопрос:
Юзер соединяется к серверу. Я знаю ИП этого серва и хочу сбросить/завершить это tcp-соединение. как?

Delimiter
30.04.2008, 01:20
criz ну я тебя же посылал на xakep.ru ..... почему я должен искать за тебя?
держи!
http://www.xakep.ru/post/22248/exploit.txt

и еще
http://www.xakep.ru/post/16680/default.asp

De-visible:Два поста подряд не есть хорошо!

criz
01.05.2008, 01:48
criz ну я тебя же посылал на xakep.ru ..... почему я должен искать за тебя?
держи!
http://www.xakep.ru/post/22248/exploit.txt

спасибо. Я был на хакере, но этого не нашел :)

M@verick
06.05.2008, 12:33
помогите!
программа по сортировке массива в памяти и записи его в файл... не могу найти ошибку

#include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <iomanip.h>
#include <stdlib.h>
#include <conio.h>
#define m(j,jj,n) m[j*n+jj]
void sort(float*,int);
void mp(float*,int);
main()
{
int n,N,i,ii;
float *mas;
printf("\n in n");
scanf("%d",&n);
N=pow(n,2);
mas=(float*)malloc(N*sizeof(float));
for(i=0;i<n;i++)
for(ii=0;ii<n;ii++)
{
printf("\n input element [%d][%d]=",i,ii);
scanf("%f",(mas+i*n)+ii);
}
void sort(float *m,int N)
{
float tmp;
int j,jj;
for (j=0;j<N-1;j++)
for (jj=0;jj<(/N-1)-j;jj++)
if(m[jj]>m[jj+1])
{
tmp=m[jj];
m[jj]=m[jj+1];
m[jj+1]=tmp;
}
}
void mp(float *m,int n)
{
FILE *out;
int j,jj;
char *fname="I:\zzz\tout.txt";
out = fopen(fname,"w");
for (j=0;j<n;j++)
{
for(jj=0;jj<n;jj++)
fprintf(out,"%6.2f",m(j,jj,n));
}
}
fclose(out);
}

iv.
06.05.2008, 13:09
Код сначала нормально оформи. =)
Наводка: выражение "2 + 2" наш мозг воспринимает как "2 плюс 2", стало быть "2+2" воспринимается как "2плюс2".

M@verick
06.05.2008, 13:27
а можно ясней излогать?

criz
06.05.2008, 20:07
Уж0с-то какой!
а можно ясней излогать?
можно. Для начала нужно оформить код и объяснить в чем проблема ;)


#include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <iomanip.h>
#include <stdlib.h>
#include <conio.h>
#define m(j,jj,n) m[j*n+jj]
void sort(float*,int);
void mp(float*,int);
main()
{
int n,N,i,ii;
float *mas;

printf("\n in n");
scanf("%d",&n);
N=pow(n,2);
mas=(float*)malloc(N*sizeof(float));
for(i=0;i<n;i++)
for(ii=0;ii<n;ii++)
{
printf("\n input element [%d][%d]=",i,ii);
scanf("%f",(mas+i*n)+ii);
}
}

void sort(float *m,int N)
{
float tmp;
int j,jj;
for (j=0;j<N-1;j++)
for (jj=0;jj<(/N-1)-j;jj++)
if(m[jj]>m[jj+1])
{
tmp=m[jj];
m[jj]=m[jj+1];
m[jj+1]=tmp;
}
}

void mp(float *m,int n)
{
FILE *out;
int j,jj;
char *fname="I:\zzz\tout.txt";
out = fopen(fname,"w");
for (j=0;j<n;j++)
{
for(jj=0;jj<n;jj++)
fprintf(out,"%6.2f",m(j,jj,n));
}
fclose(out);
}


З.Ы. проверял без компилятора... Нет вызовов функций сортировки и записи в файл.
З.З.Ы. обратите внимание на выделение ;)

geforse
07.05.2008, 17:34
Помогите пожалуйста мне в этой (http://forum.antichat.ru/thread69659.html) теме,,,всё что там написано я перепробовал, не помогает :(

ForNeVeR
07.05.2008, 19:19
geforse, тебе уже в той теме всё сказали. У твоей проблемы 2 решения:
1. Либо в начале программы (после #include) прописать using namespace std;
2. Либо вместо cin и cout использовать соответственно std::cin и std::cout.
Знающие люди считают второй вариант более предпочтительным при написании новых программ; первый же поможет уменьшить объём работ при конвертации существующих программ из "старого" стандарта в "новый".

geforse
07.05.2008, 20:39
#include <iostream.h>
#include <stdafx.h>


int main()
{
std::cout "\n";

return 0;
}


Ошибки:

error C2653: 'std' : is not a class or namespace name
error C2065: 'cout' : undeclared identifier
error C2143: syntax error : missing ';' before 'string'


При добавлении в начало using namespace std; ни чего не меняется :(

criz
07.05.2008, 22:49
geforse, либо так:

#include <iostream>
using namespace std;

int main()
{
cout << "It works!";
return 0;
}


либо так:

#include <iostream>

int main()
{
std::cout << "It works!";
return 0;
}

nerezus
07.05.2008, 23:05
1. It workS

2. #include <iostream>

geforse
09.05.2008, 11:07
http://ipicture.ru/uploads/080509/8425/hJgOkWqZIq.jpg

fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?


http://ipicture.ru/uploads/080509/8425/2S6MXTKhQ2.jpg

fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?

http://ipicture.ru/uploads/080509/8425/64ozyc7vV7.jpg


error C2653: 'std' : is not a class or namespace name
error C2065: 'cout' : undeclared identifier

http://ipicture.ru/uploads/080509/8425/TvBc2CbLtC.jpg

error C2871: 'std' : a namespace with this name does not exist
error C2653: 'std' : is not a class or namespace name
error C2065: 'cout' : undeclared identifier


Думаю так более понятна моя проблема :(

Delimiter
09.05.2008, 11:25
#include <iostream.h>

zythar
09.05.2008, 11:56
делай так:

/*file hello.c */

#include <stdio.h>

int main(int argc, char *argv[])
{
printf("Hello, world!\n");
return 0;
}


или так:

#include <unistd.h>

int main(int argc, char *argv[])
{
write(1, "h3110", 5);
return 0;
}

geforse
09.05.2008, 12:15
http://ipicture.ru/uploads/080509/8425/5QEMRdTteU.jpg

Работает, но вовсех учебниках по C++ используется cout и cin :(

zythar
09.05.2008, 12:16
а кто сказал что это C++?
это чистый C (*

тока я вот одного не пойму. почему этот паразитный инклюд везде сует свой нос? (stdafx.h)

ForNeVeR
09.05.2008, 12:21
Это как-то связано с испоьзованием precompiled headers (какая-то фишка, которая должна по идее сокращать время компиляции программы, использующей много редко изменяющихся хедеров - компилим их один раз и потом юзим). Однако на практике она многим не нужна и вызывает глюки типа невозможности скомпилировать код.

geforse
09.05.2008, 12:42
тока я вот одного не пойму. почему этот паразитный инклюд везде сует свой нос? (stdafx.h)

Без него ни чего не работает....

nerezus
09.05.2008, 12:53
zythar, это C, ему на C++ надо было вроде же.

Без него ни чего не работает.... Все без него работает. Отключить precompiled headers в опциях проекта.

geforse
09.05.2008, 13:04
Все без него работает. Отключить precompiled headers в опциях проекта.

Отключил, вот написал:

http://ipicture.ru/uploads/080509/8425/kz25vKSJJK.jpg

fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory

Тоесть нету этого файла ?

nerezus
09.05.2008, 13:11
Блять..................
Смотри мой предпоследний пост!!!

И убери нах stdafx.h, вот объясни, нахрен ты его вписал?

geforse
09.05.2008, 13:19
http://ipicture.ru/uploads/080509/8425/hklb6WIrTF.jpg

fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory

zythar
09.05.2008, 13:38
пиши

#include <iostream>

geforse
09.05.2008, 13:41
http://ipicture.ru/uploads/080509/8425/YgDQRSfv2O.jpg

error C2143: syntax error : missing ';' before 'string'

Jes
09.05.2008, 13:50
std::cout << "\n";

geforse
09.05.2008, 13:58
УРАА!!
наконец работает = )

Всем спасибо за поддержку :)

Vid0k
11.05.2008, 22:53
наваял тут по быстрому
на студии выдиралку которая из файла мыльников логины выдирает ток не совсем коректно работате

#include <iostream.h>
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
int parser(char buf[20]);
FILE *yfile;
FILE *rfile;
FILE *mfile;
FILE *ifile;
FILE *bfile;
FILE *lfile;
char *yyfile="yandex.txt";
char *rrfile="rambler.txt";
char *mmfile="mail.ru.txt";
char *iifile="inbox.txt";
char *bbfile="bk.txt";
char *llfile="list.txt";
void main( )
{
char *filename="mail.txt";
FILE *mailfile;
char bufer[20];
mailfile=fopen(filename,"r");
if(mailfile==NULL)
{
printf("Can't open file mail.txt");
exit(1);
}
mfile=fopen(mmfile,"a");
if(mfile==NULL){printf("Can't create/open file mail.txt\n");exit(1);}

yfile=fopen(yyfile,"a");
if(yfile==NULL){printf("Can't create/open file yandex.txt\n");exit(1);}

lfile=fopen(llfile,"a");
if(lfile==NULL){printf("Can't create/open file list.txt\n");exit(1);}

bfile=fopen(bbfile,"a");
if(bfile==NULL){printf("Can't create/open file bk.txt\n");exit(1);}

ifile=fopen(iifile,"a");
if(ifile==NULL){printf("Can't create/open file inbox.txt\n");exit(1);}

rfile=fopen(rrfile,"a");
if(rfile==NULL){printf("Can't create/open file rambler.txt\n");exit(1);}


while(fgets(bufer,20,mailfile))
{
system("cls");
parser(bufer);
printf("Parsing....");
}
fclose(mailfile);
fclose(yfile);
fclose(bfile);
fclose(lfile);
fclose(mfile);
fclose(rfile);
fclose(ifile);
printf("Parsing complete....\n");

}
parser(char buf[20])
{

char buf2[20];
int i=0;

while(buf[i]!='\n')
{

if(buf[i]=='@'){

if(buf[i+1]=='m')
{
fputs(buf2,mfile);//break;
return 0;
}
if(buf[i+1]=='y')
{
fputs(buf2,yfile);//break;
return 0;
}
if(buf[i+1]=='l')
{
fputs(buf2,lfile);//break;
return 0;
}
if(buf[i+1]=='b')
{
fputs(buf2,bfile);//break;
return 0;
}
if(buf[i+1]=='i')
{
fputs(buf2,ifile);//break;
return 0;
}
if(buf[i+1]=='r')
{
fputs(buf2,rfile);//break;
return 0;
}
}
else buf2[i]=buf[i];
i++;
}
return 0;
}

логины она видирает так еще и мусор какой то
satira_2006МММММММММЂяjullightММММ ММММММММЂяishipitkinМММММММММ ЂяmissmurderinММММММММЂяmik8793ММ МММММММММММЂяbeloved3110ММММММ МММЂяase495ММММММММММММММЂя strateg86МММММММММММЂяedmeeММММ ММММММММММЂяdichka777МММММММ МММЂя22adeles08_90МММММММЂяmaster-14МММММММММММЂяk.sofronovМММММ ММММЂяsdaandmuaМММММММММММЂя chentvММММММММММММММЂяgenay_kММ МММММММММММЂяkutja80ММММММММ МММММЂяfinal85МММММММММММММЂ яtitan1963МММММММММММЂяmansur_xМ ММММММММММЂяvladyaМММММММММ МММММЂяkaravaev_sММММММММММЂя beyerМММММММММММММММЂяgulietta_1 983МММММММЂяgallllaaММММММММММ ММЂяlesha20МММММММММММММЂяle5 2ММММММММММММММММЂяvalychudММ ММММММММММЂяbukvarevaММММММММ МММЂяbutcher_stММММММММММЂяnics sonМММММММММММММЂяyawawaМММММ МММММММММЂяaddy2002МММММММММ ММЂяgosha-homeММММММММММЂяrostov_kirovММММ МММЂяshiryaevagММММММММММЂяjer milovММММММММММММЂяbossvamММММ ММММММММЂяteofiliusМММММММММ МЂяsinerМММММММММММММММЂяsn iffМММММММММММММММЂяgury2002ММ ММММММММММЂяrogarММММММММММ МММММЂяsokolov1964МММММММММЂяp rivetoffМММММММММММЂя2k2tommyМММ ММММММММЂяmaxim_69ММММММММММ ММЂяhaki2002ММММММММММММЂяsash a.zxММММММММММММЂяvsevolod67МММ ММММММЂяdimych-sanММММММММММЂяnn-2002МММММММММММММЂяecoinformservic eММММЂяbevzsМММММММММММММММ яpaw_katМММММММММММММЂяlepinska yaММММММММММЂяdaria_zaroubinaММММ МЂяhoha_hohaМММММММММММЂяmurka28 07МММММММММММЂяgnedishevММММММ МММММЂяmay.eМММММММММММММММ Ђяsergun74ММММММММММММЂяmoiadres ssММММММММММЂяjiexa-xaММММММММММММЂяmassaradeyaММММ МММММЂяkakosjanММММММММММММЂ azariyaМММММММММММММЂяc_natalia_ 777МММММММЂяtrapeznikМММММММММ МЂяbelousov1977ММММММММЂяannalush МММММММММММЂяkristischaММММММ ММММЂяtolya_misnikММММММММЂяshil o1991МММММММММММЂяblago1ММММММ ММММММММЂяxhatecorexМММММММММ Ђяfred_tntММММММММММММЂяtrunchi kММММММММММММЂяld-filesММММММММММММЂяfazlievdeniskaМ МММММЂяfroluga1985МММММММММЂяe gonbostonskyМММММММЂяmadaratММММММ МММММММЂяbit1982ММММММММММММ МЂяartempatrikeevММММММЂяscotch-МММММММММММММЂяelistratovajМММ ММММЂяdumoh007ММММММММММММЂя natellacherryМММММММЂяjulen18МММММ ММММММММЂяrysena84ММММММММММ МЂяpodgornyi_romanМММММЂяso_82МММ МММММММММММЂяdanila_sdlММММММ ММММЂяjulia-10ffММММММММММЂяshlyapavsММММММ МММММЂяdusik_dashaМММММММММЂяj ane_krashММММММММММЂяdemastiyММММ ММММММММЂяabc1990dММММММММММ МЂяrasmys666МММММММММММЂяsvetik .l06ММММММММММЂяdevo4ka_iz_4itbiММ МЂяfakeeeeeeeerММММММММЂяdubovsky6 6ММММММММММЂяvsevishnii-boh86ММММЂяgrapes-17МММММММММММЂяjane_ejik_msuММММ МММЂяbirka13.89ММММММММММЂяcry_ wolf-89МММММММММЂяagnia_barsukovaМММММ Ђяmane4ka2kМММММММММММЂяanenekМ ММММММММММММЂяz119ММММММММ ММММММММЂяovickММММММММММММ МММЂяr-emelyanovМММММММММЂяgalinaryzovaМММ МММММЂяkafe_brМММММММММММММЂ яdementev-aММММММММММЂяasset0679МММММММ МММЂяjuodasММММММММММММММЂя sergej-reich78ММММММЂяlvd1967МММММММММ МММЂяnekrasov_123ММММММММЂяkipar ys83МММММММММММЂяsokolov-pasha.92ММММЂяdjgrafinММММММММММ МЂяmalipyssММММММММММММЂяartem ka__91МММММММММЂяmarzhansММММММ МММММЂяksuxa-13890МММММММММЂяkemar2007ММММММ ММММЂяrus-dubokМММММММММММЂяasl_84ММММММ ММММММММЂяvmihalevskyМММММММММ Ђяzhenjok85МММММММММММЂяolga_onaf tММММММММММЂяalone_forsakenМММММ МЂяleon81savokМММММММММЂяroma_supe rmanМММММММЂяsiyanie_strastiМММММЂ яmega-stroy1МММММММММЂяgermankuchmaryovММ МЂяsanya_matusМММММММММЂя4enyxМ МММММММММММММЂяbadi851МММММ МММММММЂяb-oleg.07МММММММММММЂяkrylova-kr.seloМММММЂяjerdna13ММММММММММ ММЂяmarina-skladММММММММЂяkatyagribovaММММММ ММЂяlokpco_s-recММММММММЂяstrojholdingМММММММ МЂяsofya_zaidesММММММММЂяdj_rock88 ММММММММММЂяolgabostММММММММ ММММЂяkot9ipa2007МММММММММЂяfil ippov84ММММММММММЂяmargoshka.77МММ МММММЂяmarinav82МММММММММММЂя muhladeevaММММММММММЂяsergg-jeffММММММММММЂяnatka-natka-natМММММЂяmcr93МММММММММММММ МЂяmega-ponchikММММММММЂяquest888МММММММ МММММЂяmaiorova.ekateriММММЂяduke-evilМММММММММММЂяnarellaММММММ МММММММЂяasselya-djММММММММММЂяslonic.spbММММММ МММЂяwiseladМММММММММММММЂя iama32ММММММММММММММЂяevgrudММ МММММММММММЂяfeeriaММММММММ ММММММЂяmoscow-beautyМММММММЂяcherrymaryМММММММ ММЂяdima_tarasovММММММММЂяar

мож кто подскажет в чем дело

Delimiter
11.05.2008, 23:01
дай формат файлов! Хотя бы одну строку!

Vid0k
11.05.2008, 23:05
файл из которого читаю

satira_2006@mail.ru
jullight@mail.ru
ishipitkin@mail.ru
missmurderin@mail.ru
putnikmark@list.ru
mik8793@mail.ru
beloved3110@mail.ru
ase495@mail.ru
strateg86@mail.ru
edmee@mail.ru
dichka777@mail.ru
22adeles08_90@mail.ru
master-14@mail.ru
k.sofronov@mail.ru
sdaandmua@mail.ru
chentv@mail.ru
genay_k@mail.ru
kutja80@mail.ru
final85@mail.ru
titan1963@mail.ru
mansur_x@mail.ru
vladya@mail.ru
piligrim@bk.ru
karavaev_s@mail.ru
hira@bk.ru
beyer@mail.ru
boyboy@bk.ru
gulietta_1983@mail.ru

на выходе

satira_2006МММММММММЂяjullightММММ ММММММММЂяishipitkinМММММММ

Delimiter
11.05.2008, 23:13
j=0;
while(buf[i]!='\n')
{

if(buf[i]=='@')
{
buf2[j]=0;
if(buf[i+1]=='m')
{
fputs(buf2,mfile);//break;
return 0;
}
if(buf[i+1]=='y')
{
fputs(buf2,yfile);//break;
return 0;
}
if(buf[i+1]=='l')
{
fputs(buf2,lfile);//break;
return 0;
}
if(buf[i+1]=='b')
{
fputs(buf2,bfile);//break;
return 0;
}
if(buf[i+1]=='i')
{
fputs(buf2,ifile);//break;
return 0;
}
if(buf[i+1]=='r')
{
fputs(buf2,rfile);//break;
return 0;
}
j=0;
}
else
{
buf2[j]=buf[i];
j++
}
i++;
}

Vid0k
11.05.2008, 23:25
спасибо терь все норм ток символ переноса строки добавил
ток я не въехал откуда эти крокозябры

criz
11.05.2008, 23:47
Если после описания переменной, не присвоить ей какое-нить значение, то переменная будет содержать в себе т.н. "мусор"(любое непредсказуемое значение).

Forcer
12.05.2008, 00:00
если это конечно не глобальная переменная ))

Delimiter
12.05.2008, 17:40
2 zo1****

WinInet получалка! :cool:


int gethttp(char *my_url, char *my_path)
{
int cntstr;
char before[100];
CString strServerName; // имя сервера
CString strObject; // имя объекта
INTERNET_PORT nPort; // номер порта для связи
DWORD dwServiceType; // тип сервиса
DWORD arg=0;
char *pt;
char *inquire;
int entr1,entr2;
int incld;
struct sockaddr_in clnt_sin, srv_sin;
bool bReuse = TRUE;
char prbuf[10];
char *curptr;
char debugstr[40];
char *mytempbuf;
char sysstr[50];
char myname[50];
int i,j,l,m;
int ex,mycritfl=0;
int cnt=0;
int length;
mytempbuf=new char[5000];
CString m_url;
CString m_path;
FILE *fptr;
if(strlen(my_url)>3)
m_url=CString(my_url);
m_path=CString(my_path);
// создаём переменную session и открываем сессию ANDY
CInternetSession session( _T( "Delimiter" ), PRE_CONFIG_INTERNET_ACCESS );
// создаём переменную pServer класса CHttpConnection
CHttpConnection* pServer = NULL;
// создаём переменную pFile класса CHttpFile
CHttpFile* pFile = NULL;
//Обратите внимание, что все запросы к функциям членам WinInet классов включены в блок программы TRY.
//Это сделано так, потому что при соединении с каким либо URL есть риск неправильной ссылки,
//особенно, когда Вы полагаете, что пользователь сам печатает URL.
//Другая проблема - времена ожидания, которые возникают, когда требуемый URL в настоящее время
//неспособен обслужить подключение.
//Так же обработка WinInet исключений, которые представлены в классе
//CInternetException, является важной частью создания Internet приложения под MFC.
try
{
// функция AfxParseURL получает данные с указанного URL ( у нас m_url ) об сервере,
// объекте, типе сервиса и порте
if ( AfxParseURL( m_url, dwServiceType, strServerName, strObject, nPort ) == 0 )
{
delete[] mytempbuf;


return 0;
}
// вывод данных о сервере

// Устанавливаем подключение по HTTP протоклолу.
pServer = session.GetHttpConnection( strServerName, nPort );
// посылаем запрос об объекте ( strObject )
pFile = pServer->OpenRequest(
CHttpConnection::HTTP_VERB_GET, strObject, NULL, 1, NULL, NULL,
INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT | INTERNET_FLAG_DONT_CACHE
);
// Добавляем заголовок к HTTP запросу
pFile->AddRequestHeaders( _T( "Accept: */*\r\nUser-Agent: Delimiter\r\n" ) );
// посылаем запрос
pFile->SendRequest( );
DWORD dwRet; // переменная для хранения кода состояния
pFile->QueryInfoStatusCode( dwRet ); // записываем код состояния в dwRet
// вывод данных

CString strHeader; // переменная для хранения полученного заголовока запроса
pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, strHeader); // записываем заголовок в strHeader
// вывод данных
// если код состояния не равен 200, то выходим из функции
if( dwRet != 200 )
{
//m_mes += "thread terminate!";
delete[] mytempbuf;
session.Close( );
return 0;
}
// ----------------------------------------------------------

fptr=fopen(my_path,"wb");
int allRead = 0; // переменная для хранения общего числи считанных байт
int nRead = pFile->Read( mytempbuf, 1024 ); // считываем первые 1024 байта в буфер.
// переменная nRead хранит количество
// считанных байт
allRead += nRead; // обновляем общее число считанных байт
// записываем буфер из nRead байт в файл
fwrite(mytempbuf,1,nRead,fptr); //file2.Write( strBody, nRead );
// цикл считывания, пока nRead не будет равняться нулю
while ( nRead > 0 )
{
nRead = pFile->Read( mytempbuf, 1024 );
if( nRead != 0 )
{
fwrite(mytempbuf,1,nRead,fptr);//file2.Write( strBody, nRead );
allRead += nRead;

}
}

fclose(fptr);
}
catch ( CInternetException* pEx )
{
// Если произошла ошибка в WinInet

// вывод ошибки
char szErr[1024];
pEx->GetErrorMessage( szErr, 1024 );

pEx->Delete( ); // удаление переменной класса CInternetException
if ( pFile != NULL )
delete pFile; // закрываем Internet файл
if ( pServer != NULL )
delete pServer; // закрываем сервер
delete[] mytempbuf;
Sleep(50);
return 0;
}

if ( pFile != NULL )
delete pFile; // закрываем Internet файл
if ( pServer != NULL )
delete pServer; // закрываем сервер
session.Close( ); // закрываем сессию
delete[] mytempbuf;
return 1;
}

toxa.tm
15.05.2008, 22:49
нужна помощь только начал изучать С++ есть программа которая создаёт файл reg.txt как заделать так чтоб она этот файл раз в 1 день выкладывала на фтп и желательно чтоб до пасовала в него новую информацию прошу сильно не ругать наверно глупый вопрос но я только учусь

Metall
24.05.2008, 15:28
Пожалуйста, помогите.
Есть динамический массив - int *mass = new char [200]. В нем содержится какое-то предложение.
С помощью функции strtok() я нахожу там определенное слово (его, например, вводит пользователь) и копирую его в другой динамический массив - slovo. Потом переворачиваю этот массив, используя функцию strrev(). Т. е. было слово "елка", а стало "акле".
Мне нужно как-то перезаписать слово "елка", находящиеся в дин. массиве mass на это же слово, только перевернутое - "акле" (которое находиться в массиве slovo). Т. е. записать в массив mass массив slovo, на то место, где находится слово "елка". Как это сделать?
ЗЫ извините за кривость изложения

Delimiter
24.05.2008, 16:38
memmove(pointer,slovo,strlen(slovo));

KeyMan
25.05.2008, 15:45
Помогите, пожалуйста! Решил на днях попробывать написать простенький ботнет с исходника sdbot (0.5a), сделал все по описанию, с компелировал через VStudio 8.0, получил exe файл, запустил, он вошел в IRC чат, но команды вообще не воспринимает, тупо молчит.... вот (http://slil.ru/25826167) ссылка на бот.

cash$$$
25.05.2008, 16:21
Вот к примеру ботнет [SD]-Bot от русского автора [SD].Это простенький и стабильный бот, обладающий функциями DoS/Администрирование IRC-канала (не уступает возможностям eggdrop). Бот управляется через IRC.
/msg chanserv register #канал пароль краткое_описание_канала (например канал Васи Пупкина)
Для компиляции необходим LCC или Visual Studio 6.У меня стоит Visual Studio 7 .NET
распаковываем исходники и открываем файл SDBOT05A.CPP.Находим там строчку:
irc_sendf2(sock, "JOIN %s %s\r\n", channel, chanpass)

и меняем ее на:

irc_sendf2(sock, "JOIN %s %s\r\n", channel, chanpass);

Все, ошибка исправлена, теперь в строчке выше ищем следующую строчку:
// bot configuration
const char botid[] = "set_me"; // ID бота,можно вписывать что угодно, апример "mYz0mb1e"
const char password[] = "set_me"; // Пароль на бота.
const char server[] = "set_me"; // IRC-сервер,пример: "irc.dalnet.ru"
const int port = 6667; // Порт сервера, оставьте как есть.
const char server2[] = ""; // необязательный параметр, на случай если 1 сервер будет не доступен, то бот законнектится на второй
const int port2 = 6667; // Аналогично
const char serverpass[] = ""; // Пароль от сервера(оставьте пустым)
const char channel[] = "set_me"; // Канал ,где будут отчитываться боты, пример: "#ru24"
const char chanpass[] = ""; // Пароль от канала (не обязательный параметр, если ваш канал не требует авторизации)
const char filename[] = "win.exe"; // Название файла-трояна(бот) которое будет видно в процессах.
const BOOL regrun = TRUE; // Использовать ключ в реестре для автозагрузки(включено по умолчанию)
const char valuename[] = "Microsoft Internet Explorer"; // Название ключа в реестре
const char prefix = '.'; // Префикс название у ботов(необязательный параметр)
const char version[] = "sdbot v0.5a by [sd]"; // Метка бота ;)
Все, бот готов к эксплуатации. Теперь компилируем, после этого сжимаем его UPX'ом чтобы уменьшить размер. Теперь заходим на IRC-канал,запускаем у себя трояна и видим что на канал зашел бот :) Теперь можно давать команды боту.

Пример:

<< Nitrex >>: .about
<sdbot1>: sdbot version 0.4c by [sd] (sdbot@mail.ru). homepage: sdbot.n3.net/
<sdbot2>: sdbot version 0.4c by [sd] (sdbot@mail.ru). homepage: sdbot.n3.net/
<sdbot3>: sdbot version 0.4c by [sd] (sdbot@mail.ru). homepage: sdbot.n3.net/
Все боты послушно выполнили нашу команду - показать инфу о создателе бота.
Список самых нужных команд для [SD]-Бота:
cycle <seconds> <channel> - уйти на N-кол-во времени с канала, а потом зайти.
die - самоубийство :)
execute <visibility> <file> [parameters] - запустить файл на компьютере жертвы
download <url> <destination> <action> - скачать файл на комьютер-зомби. Очень полезно когда нужно затроянить всех зомби другим трояном или модификацией бота!
ping <host> <# of pings> <packet size> <timeout> - великий и ужасный ПИНГ aka DoS ;)

B@ton
25.05.2008, 17:22
Установил библиотеку fmod под DevC++ но выдаются ошибки
Linker error:
undefined reference to `FSOUND_Init@12'
undefined reference to `FSOUND_Stream_Open@16'
undefined reference to `FSOUND_Stream_Play@8'
undefined reference to `FSOUND_Stream_Close@4'

Как подключить ее к компановщику в DevC++?

nerezus
25.05.2008, 17:30
В свойствах проекта должно быть.
А вообще если нравися Dev-cpp, то удали енго и поставь Code::Blocks. Это как бы его логическое продолжение.

KeyMan
25.05.2008, 17:49
cash$$$, я как раз по этому описанию и делал... оно для 0.4с версии, а в 0.5а эти ошибки изначально исправлены... я все делал по этому описанию но на любые команды(с префиксом и без) он не отвечает...

halkfild
25.05.2008, 17:55
В свойствах проекта должно быть.
А вообще если нравися Dev-cpp, то удали енго и поставь Code::Blocks. Это как бы его логическое продолжение.

http://img339.imageshack.us/img339/7805/50381867rd5.th.png (http://img339.imageshack.us/my.php?image=50381867rd5.png)

B@ton
25.05.2008, 20:33
Щас попробую

B@ton
25.05.2008, 20:52
Подрубал вот так!
http://img357.imageshack.us/my.php?image=75490858vu0.jpg
Я короче часы делаю и при прохождении стрелки один круг они должны звенеть пише так не звенят!

if (as==90)
{
FSOUND_Init(44100,32,0);
FSOUND_STREAM *stream =
FSOUND_Stream_Open("20-Michael Woods-Dan.mp3",FSOUND_2D,0,0);
FSOUND_Stream_Play(0,stream);
}

KeyMan
25.05.2008, 23:38
Люди! может мне все таки поможет? мне очень надо... или подскажите точно работающий исходник на ботнет, желательно через Irc...

B@ton
29.05.2008, 18:14
Пишу часы на курсовик по прохождению круга должны пикать но не пищат почему подскажите!

Вот полный исходник http://ifolder.ru/6772458

а вот кусок со звуком

if (as==90)
{
Beep(294, 1000/8);
Beep(440, 1000/4);
Beep(262*2, 1000/4);
Beep(330*2, 1000/4);
Beep(415, 1000/8);
Beep(440, 1000);
}

ntldr
03.06.2008, 00:06
чтобы вызвать функции chr() или ord()(если такие есть в С++), какие модули должны быть подключены?
C++, microsoft visual studio 2008

Blad94
04.06.2008, 08:03
привет, дайте плз ссылочку на книжку по Visual C++ 2008, ссори что не туда написал

z01b
04.06.2008, 16:42
чтобы вызвать функции chr() или ord()(если такие есть в С++), какие модули должны быть подключены?
C++, microsoft visual studio 2008
#include <stdlib.h>
char() = chr()
(int)char = ord(char)

Fata1ex
05.06.2008, 19:45
Blad94, Visual C++ 2008 является средой разработки. Прочитать о ней ты сможешь в документации, а если тебе нужна книжка по языку С++, посмотри в соответствующей теме.

A_V
08.06.2008, 12:41
Парни хелп...
Скомпилил проект в Борланд С++ 6
У меня все пашет, а у друзей выдает :
"Приложению не удалось запуститься, поскольку rtl60.bpl не был найден. Повторная установка приложения может исправить эту проблему."

Как можно устранить ? Или в опциях поставить... МНе пусть размер проги будет больший, но чтобы все пахало!!!

0verbreaK
08.06.2008, 13:17
Парни хелп...
Скомпилил проект в Борланд С++ 6
У меня все пашет, а у друзей выдает :
"Приложению не удалось запуститься, поскольку rtl60.bpl не был найден. Повторная установка приложения может исправить эту проблему."

Как можно устранить ? Или в опциях поставить... МНе пусть размер проги будет больший, но чтобы все пахало!!!

Не Использовать пакеты

Project->Options->Packages сними галочку с Build with runtime packages

A_V
08.06.2008, 13:31
Спасибо + поставил

procedure
08.06.2008, 17:34
Как можно в С, копировать полностью строку ввода, не испльзуя массивы с помощью функции getchar() в строку вывода. т.е. получается все должно быть в переменной типа long?

Delimiter
08.06.2008, 17:40
long value;
scanf("%l",&value);

procedure
08.06.2008, 17:47
желательно бы используя только getchar и переменные.*)))
я в учебнике только их прошел, а там задание скопировать входной поток в выходной.

Delimiter
08.06.2008, 17:53
НЕЛЬЗЯ без массива получить значение типа long c использованием getchar!!!

// есть тока одЫн способ привадный
берешь калькулятор загоняешь число .... берешь его шестнадцатиричное представление делишь все по две букивки(байты)!

Далее находишь буквы соответствующие кодам байтоффф.... и колотишь 4 (символа)байта (вычесленных тобой)

НО В ЛЮБОМ СЛУЧАЕ ДАЖЕ ПЕРЕМЕННАЯ ТИПА LONG ЭТО МАССИВ ИЗ 4-Х БАЙТОВ! ..

procedure
08.06.2008, 18:06
НЕЛЬЗЯ без массива получить значение типа long c использованием getchar!!
а как с массивом будет выглядеть?

лана сам сделаю, забегу вперед почитаю про массивы. спасибо.

Delimiter
08.06.2008, 18:12
char buffer[81];
int i, ch;
long value;
printf( "Enter a Number: " );

for( i = 0; (i < 80) && ((ch = getchar()) != EOF) && (ch != '\n'); i++ )
buffer[i] = (char)ch;
buffer[i] = '\0';
value=atol(buffer);
// 8))))))))))))))))) обрати внимание ДОБАВИЛ для тебя!!!
printf("Your number:%l",value);


стандарт ANSI С который я даю поддерживается на любой платформе! ХОТЬ НА UNIX!

Или я МОНСТР пишущий сразу под любую платформу!?? :D

procedure
08.06.2008, 18:17
ok, spasibo. Esli ne poluchitsa, zaidu proveru sam sebya*)))
Kstati kod pohodu rabotat ne budet, potomu chtu pod freebsd na kompilyatore cc nujni vrode skobki posle cikla for.

[root@procedure /tmp/programming]# cc cpstring.c
[root@procedure /tmp/programming]# /tmp/programming/a.out
Enter a Number: 10
[root@procedure /tmp/programming]#
t.e. kak bi tolko chislo sprasivaet.

p.s. ya ponyal chuvaki nujno billo ne stroki polnostu copyrovat, a simvoli.

0verbreaK
08.06.2008, 21:47
ok, spasibo. Esli ne poluchitsa, zaidu proveru sam sebya*)))
Kstati kod pohodu rabotat ne budet, potomu chtu pod freebsd na kompilyatore cc nujni vrode skobki posle cikla for.

[root@procedure /tmp/programming]# cc cpstring.c
[root@procedure /tmp/programming]# /tmp/programming/a.out
Enter a Number: 10
[root@procedure /tmp/programming]#
t.e. kak bi tolko chislo sprasivaet.

p.s. ya ponyal chuvaki nujno billo ne stroki polnostu copyrovat, a simvoli.

Dev_C++ все собрал нормально

[Dezzter]
08.06.2008, 22:15
Такой вопрос, вот 2 строчки, в каждой ошибка:

_snprintf(buffer,sizeof(buffer),"Attempting: %s, Share: \\%s, User: (%s/%s)",szServer,sharepath[i],szUsername,((strcmp(szPassword,"")==0)?("(no password)"):(szPassword)));


strbuf[i] = '\0';

Ошибка:

Eror C2065: 'i' : undeclared identifier

Кампилю бота xerion-2006, на си++ не кодю, поэтому ошибку сам найти не смог!

A_V
08.06.2008, 22:41
borland c++ builder

Парни как сохранить расположение окон?

desTiny
08.06.2008, 22:50
']Такой вопрос, вот 2 строчки, в каждой ошибка:

_snprintf(buffer,sizeof(buffer),"Attempting: %s, Share: \\%s, User: (%s/%s)",szServer,sharepath[i],szUsername,((strcmp(szPassword,"")==0)?("(no password)"):(szPassword)));


strbuf[i] = '\0';

Ошибка:

Eror C2065: 'i' : undeclared identifier

Кампилю бота xerion-2006, на си++ не кодю, поэтому ошибку сам найти не смог!
определи int i = число по контексту;

BlackSun
08.06.2008, 22:53
borland c++ builder

Парни как сохранить расположение окон?
При выходе - получить расположение окон и записать например в реест, при старте проги получить с реестра, установить положение ..

A_V
08.06.2008, 22:56
а нет "системной "поддержки, типа кнопка" запомнить расположение окон"

[Dezzter]
08.06.2008, 22:57
определи int i = число по контексту;
Можешь попродробней, что и как, а то я на сишке ни когда не кодил, не знаю что прописывать, где и как...

BlackSun
08.06.2008, 23:04
а нет "системной "поддержки, типа кнопка" запомнить расположение окон"
А кнопки "взломать мыло 1м нажатием этой кнопки" тебе не надо?

A_V
08.06.2008, 23:07
BlackSun
ппц, я нормально спросил, если тебе не хочется отвечать не отвечай вообще!

BlackSun
08.06.2008, 23:11
BlackSun
ппц, я нормально спросил, если тебе не хочется отвечать не отвечай вообще!
А я тебе и ответил, зри посты выше. Ну если тебе готовый код нужен и подругому ты неумеешь, то накой вообше берешься за кодинг?

A_V
08.06.2008, 23:25
Епт ты где увидел что я не умею??? Я спросил более легкого варианта нет ? - Нет понятно...
Нет блин надо съязвить


---------------------------------------

Все блин пох :) Мир ! ;)

0verbreaK
09.06.2008, 02:03
а нет "системной "поддержки, типа кнопка" запомнить расположение окон"

Юзай ini файлы, сохранил в него считал с помощью
GetPrivateProfileString

Architek86
09.06.2008, 23:47
алгоритм, который бы заменял значение определённого ключа на другое при запуске программы, не подскажете? :)

0verbreaK
10.06.2008, 01:12
алгоритм, который бы заменял значение определённого ключа на другое при запуске программы, не подскажете? :)

Вопрос не понятен, лучше объясни суть проблемы.

nc.STRIEM
10.06.2008, 12:36
алгоритм, который бы заменял значение определённого ключа на другое при запуске программы, не подскажете? :)
WritePrivateProfileString

procedure
10.06.2008, 22:46
Извиняюсь за тупое форматирование текста, эт мой блокнот юникс файлы открывает так. Можете подсказать где может быть ошибка? Результат выводится только значения все на 0.
#include main() { int c, nl, t, space, n, i, l; int array[100]; nl = c = t = space = n = 0; for (i = 0; i < 100; ++i) { array[i] = 0; } i = 0; while ((c = getchar()) != EOF) { if (c = '\n') { printf("\n\tSymbol: "); for (l = 0; l < i; ++l) { printf("%d ", array[l]); } printf("\n\tTab: %d\n\tSpace: %d\n\tNumber: %d\n", t, space, n); break; } else if (c = '\t') { ++t; } else if (c = ' ') { ++space; } else if (c >= '0' && c <= '9') { ++n; } else { array[i] = c; ++i; } } }

hoty
11.06.2008, 00:08
Опишите, плз, как написать программу (на подобие teleport pro), на языке СИ

Итак, что нужно:
Программа скачивает страницы, которые ей указали в виде списка.
Список url-ов хранится в текстовом файле.

Алгоритм бы знать,где искать и т.д.

z01b
11.06.2008, 00:11
Извиняюсь за тупое форматирование текста, эт мой блокнот юникс файлы открывает так. Можете подсказать где может быть ошибка? Результат выводится только значения все на 0.

В твоем коде даже не попробовал разбираться. Если тебе ответ нужен, оформляй норм, ибо никто не собирается глаза ломать.
ЗЫ
На будущее юзай vim или хотябы nano

klown
11.06.2008, 00:25
procedur, попробуй через WordPad открыть.. или как он там в винде называется..

z01b
11.06.2008, 00:36
Опишите, плз, как написать программу (на подобие teleport pro), на языке СИ

Итак, что нужно:
Программа скачивает страницы, которые ей указали в виде списка.
Список url-ов хранится в текстовом файле.

Алгоритм бы знать,где искать и т.д.

а какая иде?

в принципе парсится файл построчно, т.е. одна строка - одна сылка. Потом качаем через InternetReadFile().

Вот код в инете нашел


BOOL GetFile (HINTERNET IN hOpen, // Handle from InternetOpen()
CHAR *szUrl, // Full URL
CHAR *szFileName) // Local file name
{
DWORD dwSize;
CHAR szHead[] = "Accept: */*\r\n\r\n";
VOID * szTemp[25];
HINTERNET hConnect;
FILE * pFile;

if ( !(hConnect = InternetOpenUrl ( hOpen, szUrl, szHead,
lstrlen (szHead), INTERNET_FLAG_DONT_CACHE, 0)))
{
cerr << "Error !" << endl;
return 0;
}

if ( !(pFile = fopen (szFileName, "wb" ) ) )
{
cerr << "Error !" << endl;
return FALSE;
}
do
{
// Keep coping in 25 bytes chunks, while file has any data left.
// Note: bigger buffer will greatly improve performance.
if (!InternetReadFile (hConnect, szTemp, 50, &dwSize) )
{
fclose (pFile);
cerr << "Error !" << endl;
return FALSE;
}
if (!dwSize)
break; // Condition of dwSize=0 indicate EOF. Stop.
else
fwrite(szTemp, sizeof (char), dwSize , pFile);
} // do
while (TRUE);
fflush (pFile);
fclose (pFile);
return TRUE;
}

nc.STRIEM
11.06.2008, 00:41
>>procedure
самое начало #include main() забавно)

procedure
11.06.2008, 02:33
#include <stdio.h>

main()
{
int c, nl, t, space, n, i, l;
int array[100];
nl = c = t = space = n = 0;


for (i = 0; i < 100; ++i) {
array[i] = 0;
}

i = 0;
while ((c = getchar()) != EOF) {
if (c = '\n') {
printf("\n\tSymbol: ");
for (l = 0; l < i; ++l) {
printf("%d ", array[l]);
}
printf("\n\tTab: %d\n\tSpace: %d\n\tNumber: %d\n", t, space, n);
break;
}
else if (c = '\t') {
++t;
}
else if (c = ' ') {
++space;
}
else if (c >= '0' && c <= '9') {
++n;
}
else {
array[i] = c;
++i;
}
}
}

Все открылся нормлально. Открывал с помощью блокнота, а в FreeBSD узал ee редактор.
Может ксе так кто нибудь поможет найти ошибку?

p.s. сразу говорю узаю компилятор cc на крайний случай могу попробывать gcc.

z01b
11.06.2008, 02:56
#include <stdio.h>

main()
{
int c, nl, t, space, n, i, l;
int array[100];
nl = c = t = space = n = 0;


for (i = 0; i < 100; ++i) {
array[i] = 0;
}

i = 0;
while ((c = getchar()) != EOF) {
if (c = '\n') {
printf("\n\tSymbol: ");
for (l = 0; l < i; ++l) {
printf("%d ", array[l]);
}
printf("\n\tTab: %d\n\tSpace: %d\n\tNumber: %d\n", t, space, n);
break;
}
else if (c = '\t') {
++t;
}
else if (c = ' ') {
++space;
}
else if (c >= '0' && c <= '9') {
++n;
}
else {
array[i] = c;
++i;
}
}
}

Все открылся нормлально. Открывал с помощью блокнота, а в FreeBSD узал ee редактор.
Может ксе так кто нибудь поможет найти ошибку?

p.s. сразу говорю узаю компилятор cc на крайний случай могу попробывать gcc.

Я не совсем понял что этот код делает. Что тебе нужно, считать сколь букв, цифр символов табуляции и новой строке, есть в строке?

krypt3r
11.06.2008, 06:52
ггг, процедур, как насчет того, чтобы внутри ифа поставить сравнение, а не присваивание?

if (c == '\n') {

и т.д.

procedure
11.06.2008, 09:11
Chuvaki pishu s brausera lynx, ppc. Spasibo bolshoe vse rabotaet. Scha zaidu s norm brausera + kinu. =)

Sirob
11.06.2008, 09:29
Подскажите, пожалуйста, как создавать файл в текущей директории. Пробовал GetCurrentDir, но что то с типами переменных не выходит - char- Ansi + знак "\" надо два раза указывать. Пока юзаю стандартную процедуру.
char szFileName[MAXFILE+4];
int iFileHandle;
int iLength;
if (SaveDialog1->Execute())
{
if (FileExists(SaveDialog1->FileName))
{
fnsplit(SaveDialog1->FileName.c_str(), 0, 0, szFileName, 0);
strcat(szFileName, ".bak");
RenameFile(SaveDialog1->FileName, szFileName);
}
iFileHandle = FileCreate(SaveDialog1->FileName);
}
Но хотелось бы
1. Выдается окно SaveDialog в текущей директории.
2. Файл без запроса создается в текущей директории.

.Slip
11.06.2008, 10:00
>> Подскажите, пожалуйста, как создавать файл в текущей директории.
Просто без указания полного пути. Только имя файла. Будет создан в дирректории запуска программы.

Sirob
11.06.2008, 10:03
.Slip, спасибо. Попробую.
Программку пишу _http://ifolder.ru/6903178 Стоит ее постить на ачате (есть на граббе и асечке)? Если да, то в каком разделе?

nc.STRIEM
11.06.2008, 10:23
>> Подскажите, пожалуйста, как создавать файл в текущей директории
fopen("filename", "wb"); уже не катит?

groundhog
11.06.2008, 10:51
Погляди какая у тебя текущая директория (GetCurrentDirectory) после запуска экзешника. Если всё нормально запускаешь, то вызов fopen должен создавать файл в текущей директории... Или покажи весь исходник... Если запускаешь из под студии, то там текущая директория будет не директория экзешника, а директория проекта... В общем побольше описалова скинь, или исходник покажи...

Sirob
11.06.2008, 10:57
groundhog Пишу на C++Builder 6.0. Домой приду - попробую что насоветовали. Останутся вопросы - позадаю. Спасибо.

procedure
11.06.2008, 16:37
BOOL GetFile (HINTERNET IN hOpen, // Handle from InternetOpen()
CHAR *szUrl, // Full URL
CHAR *szFileName) // Local file name
{
DWORD dwSize;
CHAR szHead[] = "Accept: */*\r\n\r\n";
VOID * szTemp[25];
HINTERNET hConnect;
FILE * pFile;

if ( !(hConnect = InternetOpenUrl ( hOpen, szUrl, szHead,
lstrlen (szHead), INTERNET_FLAG_DONT_CACHE, 0)))
{
cerr << "Error !" << endl;
return 0;
}

if ( !(pFile = fopen (szFileName, "wb" ) ) )
{
cerr << "Error !" << endl;
return FALSE;
}
do
{
// Keep coping in 25 bytes chunks, while file has any data left.
// Note: bigger buffer will greatly improve performance.
if (!InternetReadFile (hConnect, szTemp, 50, &dwSize) )
{
fclose (pFile);
cerr << "Error !" << endl;
return FALSE;
}
if (!dwSize)
break; // Condition of dwSize=0 indicate EOF. Stop.
else
fwrite(szTemp, sizeof (char), dwSize , pFile);
} // do
while (TRUE);
fflush (pFile);
fclose (pFile);
return TRUE;
}
Чуваки, у меня вывод в поле Symbol: в цифрах, я так понял в кодах ANSI. А можно ли сделать чтоб вывод был в символах которые я ввел?

Delimiter
11.06.2008, 19:58
strstr(kod_procedure,"Symbol") дает NULL! :cool:

z01b
11.06.2008, 23:31
BOOL GetFile (HINTERNET IN hOpen, // Handle from InternetOpen()
CHAR *szUrl, // Full URL
CHAR *szFileName) // Local file name
{
DWORD dwSize;
CHAR szHead[] = "Accept: */*\r\n\r\n";
VOID * szTemp[25];
HINTERNET hConnect;
FILE * pFile;

if ( !(hConnect = InternetOpenUrl ( hOpen, szUrl, szHead,
lstrlen (szHead), INTERNET_FLAG_DONT_CACHE, 0)))
{
cerr << "Error !" << endl;
return 0;
}

if ( !(pFile = fopen (szFileName, "wb" ) ) )
{
cerr << "Error !" << endl;
return FALSE;
}
do
{
// Keep coping in 25 bytes chunks, while file has any data left.
// Note: bigger buffer will greatly improve performance.
if (!InternetReadFile (hConnect, szTemp, 50, &dwSize) )
{
fclose (pFile);
cerr << "Error !" << endl;
return FALSE;
}
if (!dwSize)
break; // Condition of dwSize=0 indicate EOF. Stop.
else
fwrite(szTemp, sizeof (char), dwSize , pFile);
} // do
while (TRUE);
fflush (pFile);
fclose (pFile);
return TRUE;
}
Чуваки, у меня вывод в поле Symbol: в цифрах, я так понял в кодах ANSI. А можно ли сделать чтоб вывод был в символах которые я ввел?

Мдее... я для примера тебе дал. Дальше меняй сам, как тебе нужно.

procedure
12.06.2008, 00:06
#include <stdio.h>

main()
{
int c, nl, t, space, n, i, l;
int array[100];
nl = c = t = space = n = 0;


for (i = 0; i < 100; ++i) {
array[i] = 0;
}

i = 0;
while ((c = getchar()) != EOF) {
if (c = '\n') {
printf("\n\tSymbol: ");
for (l = 0; l < i; ++l) {
printf("%d ", array[l]);
}
printf("\n\tTab: %d\n\tSpace: %d\n\tNumber: %d\n", t, space, n);
break;
}
else if (c = '\t') {
++t;
}
else if (c = ' ') {
++space;
}
else if (c >= '0' && c <= '9') {
++n;
}
else {
array[i] = c;
++i;
}
}
}

БЛин чуваки я дурак, не тот код скопировал. В этом подскажите пожалуйста в чем может быть проблема. После Symbol: выдаются цифры вместо букв.

Delimiter
12.06.2008, 00:13
#include <stdio.h>

main()
{
int c, nl, t, space, n, i, l;
int array[100];
nl = c = t = space = n = 0;


for (i = 0; i < 100; ++i) {
array[i] = 0;
}

i = 0;
while ((c = getchar()) != EOF) {
if (c = '\n') {
printf("\n\tSymbol: ");
for (l = 0; l < i; ++l) {
printf("%d ", array[l]); //!!! собака тут!!!!!!!!!!!!!!!!!!
// если хочешь как символ printf("%с ",(char ) array[l]);
// но будешь терять информацию в один байт два байта не впихнуть без потерь
}
printf("\n\tTab: %d\n\tSpace: %d\n\tNumber: %d\n", t, space, n);
break;
}
else if (c = '\t') {
++t;
}
else if (c = ' ') {
++space;
}
else if (c >= '0' && c <= '9') {
++n;
}
else {
array[i] = c;
++i;
}
}
}

БЛин чуваки я дурак, не тот код скопировал. В этом подскажите пожалуйста в чем может быть проблема. После Symbol: выдаются цифры вместо букв.

... переделай на char array[100];

но самой главное что ты массив и не заполняешь!!!!

z01b
12.06.2008, 00:22
procedure, я тебя уже спросил, что ты от кода ждешь????

procedure
12.06.2008, 00:32
z01b-> когда я только дошел до циклов в книге, у меня была задачка скопировать входной поток в выходной с фильтрацией символов. Я ее так и не смог не применяя функций (кроме getchar) и массивов решить, сейчас хотяб так постараюсь решить. Только не помогайте чуваки плиз, если что я вопрос сам задам. Я хочу сам сделать)))
Потом постепенно буду добавлять в эту задачку новые упражнния усложняя ее все более и более.

Delimiter
12.06.2008, 00:34
дебагером учись пользоваться , сразу увидишь механику ИЗНУТРИ!

procedure
12.06.2008, 00:47
еще вопрос, а как мне нужно полностью массив в char переделать?
int array[100];
переделать вот так:
char array[100];

Delimiter
12.06.2008, 00:56
еще вопрос, а как мне нужно полностью массив в char переделать?
int array[100];
переделать вот так:
char array[100];

да....
самое главное будет приведенье к типу char

если с=getchar() целое занимающее 2 байта
то получить код символа отбросив старший байт можно

array[index]=(char )c;

z01b
12.06.2008, 01:39
z01b-> когда я только дошел до циклов в книге, у меня была задачка скопировать входной поток в выходной с фильтрацией символов. Я ее так и не смог не применяя функций (кроме getchar) и массивов решить, сейчас хотяб так постараюсь решить. Только не помогайте чуваки плиз, если что я вопрос сам задам. Я хочу сам сделать)))
Потом постепенно буду добавлять в эту задачку новые упражнния усложняя ее все более и более.

#include <windows.h>
int main(int argc, char* argv[])
{
char in[255];char out[255];int i;scanf("%s",&in);for(i=0;i<=lstrlen(in);i++){out[i]=in[i];}printf("%s",out);return 0;}



Я гений?

ЗЫ У меня редактор такой и не пашет.

procedure
12.06.2008, 01:43
V obshem ya ispravil vot tak:
int c, nl, t, space, n, i, l;
char array[100];
.........
while ((c = getchar()) != EOF) {
........
else {
array[i] = (char )c;
/*array[i] = c;*/
++i;
}

Tolko v chem to dopustil oshibku seichas eksperementiruu.

Delimiter
12.06.2008, 01:44
почти 8)))))))))
если тут исправишь
scanf("%s",&in);

2 procedure
идешь в правильном направлении

procedure
12.06.2008, 01:46
тебе же сказали c== getchar()
eto ne sravnenie, a prisvaivanie,

Delimiter
12.06.2008, 01:48
с=getchar()
не сбивай его....

procedure
12.06.2008, 01:50
Mojet bit nujno "c" sdelat char?

Delimiter
12.06.2008, 01:56
нет getchar возвращает int , на случай скан-кодов со времен Dos
так уж клавиатура устроена что количество кодов которое она может выдать больше чем 255!

попробуй понять мою строку
for(i=0;(array[i]=(char )getchar())!=EOF;i++)
....

z01b
12.06.2008, 01:56
Mojet bit nujno "c" sdelat char?
нет, там все окей ;) с присваивается код введенного символа.

procedure
12.06.2008, 02:05
i++
a est ved raznica mejdu ++i; and i++; V kingie bilo napisano chto ++i; eto increment. A ostalnoe xz potom obyasnyat*)))))))
(array[i]=(char )getchar())!=EOF
eto ya ponyal tak, v massiv dobavlyautsa dannie poka idet vvod i poka virajenie ne ravno EOF.

v obshem seihas poprobuu.

procedure
12.06.2008, 02:07
t.e. etu stroku nujno ispolzovat vmesto while?

Delimiter
12.06.2008, 02:15
i++ и ++i
отличаются тем когда должно быть увеличение i
i++ после текущей ситуации
++i до текущей ситуации

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

for(i=0;(array[i]=(char )getchar())!=EOF;i++)
{
switch(array[i])
{
case '\t':
case '1':
case '2':
case '3':
case '4':
case '5': i--; //фильтруются все символы от 1 до 5 и табуляции
} // за счет смещения текущего положения счетчика цикла
}
array[i]=0; //все строки в С должны завершаться нулем
printf("%s",array) // при указании массива без индексов берется его адрес

procedure
12.06.2008, 02:16
#include <stdio.h>

main()
{
int c, nl, t, space, n, i, l;
char array[100];
nl = c = t = space = n = 0;


for (i = 0; i < 100; ++i) {
array[i] = 0;
}

i = 0;
for(i=0;(array[i]=(char )getchar())!=EOF;i++) {
if (array[i] == '\n') {

printf("\nSymbol: ");

for (l = 0; l < i; ++l) {
printf("%d ", array[l]);
}
printf("\nTab: %d\nSpace: %d\nNumber: %d\n", t, space, n);
break;
}
else if (c == '\t') {
++t;
}
else if (c == ' ') {
++space;
}
else if (c >= '0' && c <= '9') {
++n;
}
}
}
ya perepisal kod nemonogo podrugomu, On vse ravno vidaet takoi resultat:
[root@procedure /tmp/programming]# cc cpstring.c
cpstring.c:62:4: warning: no newline at end of file
[root@procedure /tmp/programming]# /tmp/programming/a.out
sadfg

Symbol: 115 97 100 102 103
Tab: 0
Space: 0
Number: 0
[root@procedure /tmp/programming]#

z01b
12.06.2008, 02:21
>>
ya perepisal kod nemonogo podrugomu, On vse ravno vidaet takoi resultat

ну дык, а какой тебе результат нужен, если у тебя нету знака табуляции, новой строки и т.д.?

procedure
12.06.2008, 02:23
ya ehe ot seba dobavil case '\n': break; chtob is programmi vihodit bilo mojno, t.e. iz cikla.
no on chto to ne vihodit....sori ya swith prosto ehe ne prohodil...

Delimiter
12.06.2008, 02:29
в цикле for //// ты должен считать

а уж по окончании выдавать результаты , а ты при первом же нахождении
кода "возврата строки" пытаешься напечатать!


t=space=n=0;
for(i=0;(array[i]=(char )getchar())!=EOF;i++)
{
if(array[i]=='\t')
t++;
if(array[i]>='0' && array[i]<='9')
n++;
if(array[i]==' ')
space++;
}
array[i]=0; //все строки в С должны завершаться нулем
printf("Symbol:%s\r\n",array); // при указании массива без индексов берется его адрес
printf("Tab:%d\r\n",t);
printf("Space:%d\r\n",space);
printf("Number:%d\r\n",n);

procedure
12.06.2008, 02:29
ну дык, а какой тебе результат нужен, если у тебя нету знака табуляции, новой строки и т.д.?
mne nujen chtob on vidaval ne Symbol: 115 97 100 102 103, a Symbol: sadfg

Delimiter
12.06.2008, 02:31
ну ты выводишь каждый элемент как число
printf("%d ", array[l]);

если хочешь как символ
printf("%с ", array[l]);

но взгляни ВЫШЕ как я вывожу весь массив одной 0-завершенной строкой...

printf("%s",array); //вывод строки символов пока не встретится 0!

procedure
12.06.2008, 02:36
chvaki ya ponyal, chtob vivelsya simvol nujno bilo ispolzovat vmesto %d, %s. Spasibo bolshoe. Dumau do zavtra rashiru funkcional. =))

klown
12.06.2008, 03:09
a est ved raznica mejdu ++i; and i++; .
ну это стандартно, что ++i сперва инкрементируется а потом используется а i++ сперва используется а потом инкрементируется..

hoty
12.06.2008, 22:28
To z01b:

а какая иде?

Охото сделать программу наподобие teleport pro.
Но до такого далеко...

в принципе парсится файл построчно, т.е. одна строка - одна сылка. Потом качаем через InternetReadFile().

Вот код в инете нашел ...

Сенк. Посмотрю.

z01b
12.06.2008, 23:02
To z01b:
Охото сделать программу наподобие teleport pro.
Но до такого далеко...

Integrated Development Environment = ИДЕ aka IDE
Если был бы Borland C++, мог бы юзать TStringList, поэтому и спросил.

Doom123
14.06.2008, 20:12
Ток сёдня начал учить c++)

написал пары выводов и вводов ну в общем вот


#include <iostream>
using namespace std;

int main()
{
int vibor;

cout <<"Vvedite vash vibor\n";
cin >>vibor;

if(vibor==1)
{
int visota, osnovanie, ploshad;
cout <<"Visota treugolnika\n";
cin >>visota;

cout <<"Osnovanie treugolnika\n";
cin >>osnovanie;

ploshad = (visota * osnovanie) / 2;

cout <<"Ploshad:" <<ploshad <<"\n" <<endl;

system("PAUSE");

return 0;
}

if(vibor == 2)
{
int funt;
float kilo;

cout <<"Kolichestvo funtov?\n";
cin >>funt;

kilo = funt * 0.4095124;
cout <<"V kilogramah:" <<kilo <<"kg\n" <<endl ;

system("PAUSE");
return 0;
}

cout <<endl;
return 0;

}


У меня она работает а на соседем компе нет.
В чём моя ошибка? даже если засунуть в сетевую папку нвходяшиюся на другом копе и запустить то всёравно не запускаеца...

Delimiter
14.06.2008, 20:22
компилировал и линковал в дебаг моде поэтому дебаг dll-ки отсутствуют

.... нужно в конечном итоге перелинковать в релиз моде, если хочешь чтоб програмка использовала только стандартные dll-ки

Fata1ex
14.06.2008, 20:25
<<"\n" <<endl;
к чему это?

Doom123
14.06.2008, 22:40
Fata1ex ну \n это перевод строки а <<endl конец строки и очистка буфера=)

Delimiter ой думал я в релиз моде а я посто делал релиз и нажимал зелёную кнопку ипа плей(start debugging)

vc++ 2005

_empty
16.06.2008, 02:42
У меня она работает а на соседем компе нет.
В чём моя ошибка? даже если засунуть в сетевую папку нвходяшиюся на другом копе и запустить то всёравно не запускаеца...


Наверно на другом компе sp1 винда, по умолчанию exe-шник компилится со стандартными библиотеками windows, и в sp1 много чего не хватает, поэтому может появляться ошибка, тогда можно сделать так - Project->Properties , там на вкладке General есть пункт - "Use of MFC" , выбирай Use in Static library , после этого у тебя прога потяжелеет кило на 200-300, точна не считал, но точна уже запуститься, хоть на Windows 2000.

procedure
16.06.2008, 20:06
((( не смог сам сделать гистограмму на С. Помогите плиз.
#include <stdio.h>
/*program for copy input string to output string, in this programm here
edit symbol tab and backspace for input \\ */
main()
{
int c, t, space, n, i, l, z, h;
char array[100], nl;
c = t = space = n = 0;


for (i = 0; i < 100; ++i) {
array[i] = 0;
}
nl = '\\';
for(i=0;(array[i]=(char )getchar())!=EOF;i++)
{
if(array[i]=='\t') {
array[i]=nl;
++t;
}
if(array[i]=='\b') {
array[i]=nl;
}
if(array[i]>='0' && array[i]<='9') {
n++;
}
if(array[i]==' ') {
space++;
}
if(array[i]=='\n') {
array[i] = 0;
printf(" _\n");
for (z=0; z<i; ++z) {
if (array[z] == ' ') {
printf(" _\n");
}
else {
printf("| |\n");
}
}
printf("\nSymbol:\n%s\r\n", array);
printf("\nTab:%d", t);
printf("\nSpace:%d", space);
printf("\nNumber:%d\n", n);
break;
}
}
}

Delimiter
16.06.2008, 20:20
почему ты не даешь циклу нормально работать???

Вывод результатов нужно делать ПОСЛЕ работы цикла! А иначе получается ты пытаешься
выводить каждый раз когда нажимаешь Enter, как же в таком случае ты посчитаешь сколько раз он нажат. Если его не нужно считать и он должен завершать ввод, то просто

for(i=0;(array[i]=(char )getchar())!='\n';i++)

и внизу в цикле не нужно ничего пихать в массив(вместо табуляции), только считай повторы
поскольку ты пихаешь каждый символ уже

for(i=0;(array[i]=(char )getchar())!='\n';i++)
тут_______/

и это чего должно делать?

for (z=0; z<i; ++z)
{
if (array[z] == ' ')
{
printf(" _\n");
}
else {
printf("| |\n");
}
}

если это гистограмма то почему ты не используешь уже вычесленные n,space,t?
загоняй в for
типа

for(i=0;i<space;i++)
printf('=');
printf("\r\n");

одна линейка готова


Если же ты хочешь выходить все таки по EOF то...
#include <stdio.h>
/*program for copy input string to output string, in this programm here
edit symbol tab and backspace for input \\ */
main()
{
int c, t, space, n, i, l, z, h;
char array[100], nl;
c = t = space = n = 0;


for (i = 0; i < 100; ++i) {
array[i] = 0;
}
nl = '\\';
for(i=0;(array[i]=(char )getchar())!=EOF;i++)
{
if(array[i]=='\t') {
array[i]=nl; \\ непонятная замена
++t;
}
if(array[i]=='\b') {
array[i]=nl; \\ непонятная замена
}
if(array[i]>='0' && array[i]<='9') {
n++;
}
if(array[i]==' ') {
space++;
}
if(array[i]=='\n') {
array[i] = 0;
printf(" _\n");

for(z=0;z<space;z++)
printf('=');
printf("spaces\r\n");

for(z=0;z<n;z++)
printf('=');
printf("numbers\r\n");

for(z=0;z<t;z++)
printf('=');
printf("tabs\r\n");

printf("\nSymbol:%s\r\n", array);
printf("\nTab:%d\r\n", t);
printf("\nSpace:%d\r\n", space);
printf("\nNumber:%d\r\n", n);

// и главное сбрасывай счетчик i
// иначе в твоем исполнении опасно!!!
i=0; //!!!!!!!!!!!!!!!!!!!!!!!

// хотя этот break тебе и не даст 8)))
// но УЧИСЬ сбрасывать счетчики чтоб
// заработал EOF
// break; УБИРАЕМ ЭТО!!!!
// получится что статистика выводится только
// при нажатии Ентера
// значит нужно снова обнулить
c = t = space = n = 0;
}
}
}

Fata1ex
16.06.2008, 20:56
А разве endl; не переводит на новую строку ? о_О

procedure
16.06.2008, 22:35
Delimiter-> что то плохо все понял, пива сегодня немного перепил. Единственное что ярко понял, это делать вывод после работы цикла, а гистограмма нужна которая показывает длинну слов в виде гистограммы.
А по поводу EOF это я вобще не знаю, что за прикол. Это выход из цикла когда нажимаешь Esc?
Я ко всем примерам из учебника, добавляю '\n' потому что не знаю как без Entera выйти из программы.

Отлично, я теперь все понял. Нужно делать гистограмму горизонтальной. А я хотел сделать ее вертикальной, и у меня не получалось.

_empty
16.06.2008, 22:53
Delimiter-> что то плохо все понял, пива сегодня немного перепил. Единственное что ярко понял, это делать вывод после работы цикла, а гистограмма нужна которая показывает длинну слов в виде гистограммы.
А по поводу EOF это я вобще не знаю, что за прикол. Это выход из цикла когда нажимаешь Esc?
Я ко всем примерам из учебника, добавляю '\n' потому что не знаю как без Entera выйти из программы.

Отлично, я теперь все понял. Нужно делать гистограмму горизонтальной. А я хотел сделать ее вертикальной, и у меня не получалось.

EOF - это End Of File ( конец файла )

А смысл и правда \n добавлять?? либо endl либо \n . Что б понятней было переформатировать.

Forcer
16.06.2008, 23:01
лучше endl.

_empty
16.06.2008, 23:12
лучше endl.

Если вывод делаешь через стандартный класс iostreаm и его предков и потомков, то конечно нужно использовать endl

А если вывод делаешь по С (функция printf и ей подобные), то лучше кроме как \n ничего не получится

просто я больше сишные люблю, привык к синтаксису, а у iostream команды управления вводом/выводом для cin/cout плохо знаю :) Но здесь как говориться, кому что нравиться

Delimiter
16.06.2008, 23:15
printf (и ее клоны) - это мощная команда кто умеет пользоваться форматами , даже само сравнение не коректно! Моська и слон!

_empty
17.06.2008, 00:10
printf (и ее клоны) - это мощная команда кто умеет пользоваться форматами , даже само сравнение не коректно! Моська и слон!

Друг, ты немного ошибаешься, iostream тоже имеет много очень параметров, я нашел
http://valera.asf.ru/cpp/book/c20.shtml

Просто огромный мануал по библиотеке iostream , она ничуть не хуже чем printf и его семейство :)

Просто привык к С , вот и пользуюсь printf , а некоторые друзья iostream, вот и все

Delimiter
17.06.2008, 00:21
извините .... что ошибся в вашей оценке мощности операторов >> << :D

напиши то же что и ниже с помощью твоих операторов и сравним!

float d=5,564632;
printf("%.2f",d);


....вывести именно 2 знака после запятой

Fata1ex
17.06.2008, 11:06
У каждого варианта есть свои преимущества и недостатки. Как вообще можно сравнивать потоковый вывод и printf ?
И мне почему-то кажется что потоковы намного лучше, гораздо больше возможностей.
Delimiter -
streamsize precision(streamsize p);
p - количество знаков после запитой.

-> cout.precision(10);

Или я не понял - вы про перегруженные операторы сдвига или про потоковый ввод - вывод? операторы так же можно самим перегрузить так чтобы выводилось заданное колво знаков после запятой.
П.С.
если делать все через манипуляторы - мона написать так -
setprecision(int p); - работает аналогично

Forcer
17.06.2008, 11:20
код с потоками, ко всему прочему, ещё гораздо нагляднее и читабельнее. Плюс, поток он же все-таки поток!!! - он сам по себе гораздо более функциональная и удобная вещь.

Fata1ex
17.06.2008, 11:23
И вообще - зачем было делать аналог, менее удобный нежели его предшественник. Нелогично.

Delimiter
17.06.2008, 11:53
ну вот что и требовалось доказать в одну строчку вы не уложились 8)))))
разговоров нет..... хотите 2ве - это ваше право..... и не пытайтесь запихнуть 2 оператора на одну строку 8))))))))))) хотите набирать больше символов ручками?

Нравится абстрактное понятие поток??? 8)))) Прямо таки и льется??? Волнами???? Голубенький или всетаки коричневый??? 8))))))))) Вас дурят мужики .... ЛОЖКИ НЕТ!

... по поводу курицы и яйца, загляните в кернеловские функции и будете удивлены встретив там аналоги printf!

nc.STRIEM
17.06.2008, 12:06
Плюс, поток он же все-таки поток!!!
даж не знаю что ты этим хотел сказать....
имхо printf более функциональная весчь, хотя это кто как привык..

неболшой тестик на скорость

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream.h>

#define ZIKL 1000000

int main()
{
int ts = time(NULL);
int i;

for(i = 0; i < ZIKL; i++)
printf("hello");

int tp = time(NULL);
for(i = 0; i < ZIKL; i++)
std::cout<<"hello";

printf("\n\nprintf - %d\ncout - %d\n", tp - ts, time(NULL) - tp);
return system("pause");
}


как видно printf работает быстрее, да и с ее помощбю оч удобно форматировать строки!
http://ru.wikipedia.org/wiki/Printf

_empty
17.06.2008, 12:06
Мда... Жаркие дебаты , прям бой какой то iostream vs stdio =)

Победитель - printf! Поздравляем поклонников функции!

ZIKL 100000

time cout 9
time printf 3

Fata1ex
17.06.2008, 12:13
Тестик на скорость, зачем тогда писать на c++ этот код? Может тогда ради скорость на asm'e ? Потоковый вывод гораздо более удобен и функционален %)
а скуяле ты судья?

Delimiter
17.06.2008, 12:21
вы не логичны.... на асме приходится гораздо больше писать для той же ситуации... а мы говорим что printf - лаконичнее , быстрее и матрица не сьела ваш моск внушив что есть чтото с названием поток!


.... давайте я напишу класс назову его тиранозавр.... а все кто будут пользоваться с важность будут говорить о тирррексах.... и быть важными что они абстрагировались до уровня тиранозавров 8)))))))))))))

_empty
17.06.2008, 12:26
Тестик на скорость, зачем тогда писать на c++ этот код? Может тогда ради скорость на asm'e ? Потоковый вывод гораздо более удобен и функционален %)
а скуяле ты судья?

Я тест провел, победил printf , но никто ж не говорит что cout это плохо. Я ж говорю, кому что нравиться, через классы *stream зато удобней с файлами работать :)

Fata1ex
17.06.2008, 12:29
И да - C++ оо язык, поэтому логичнее использовать для ввода-вывода на языке c++ именно классы-шаблоны ( А не сишные функции :(

Fata1ex
17.06.2008, 12:33
ну вот что и требовалось доказать в одну строчку вы не уложились
Омг, что значит не уложились? Если я указываю прототип и пример это не значит, что в коде это будет две строчке.

zythar
17.06.2008, 12:35
printf быстрее если выводишь маленький объем данных. а соut если большой насколько я помню.
имхо юзать сишные ф-ции в с++ бред. пишите либо на си либо на си++.


А не дешевые сишные функции

подредактируй пожалуйста свой пост и измени дешевые сишные функции на сишные функции

Delimiter
17.06.2008, 12:45
я программю на С++ ! И я даже не понимаю о чем вы тут говорите.... С++ вобрало в себя весь Си(в стандарте Ansi) и пользоваться им не просто можно а нужно! Это не 2 языка... С++ это ступень развития Си

_empty
17.06.2008, 12:55
Все, щас иду на экзамен по языкам программирования и гружу препода - кто же круче. А то тут стало жарко прям! Ну еще раз, кому нравиться iostream - юзайте, кому нравиться printf - юзайте, все равно все при своих мнениях останемся!

Forcer
17.06.2008, 13:00
и пользоваться им не просто можно а нужно
Страуструп вот только так не считает.

nc.STRIEM
этот тест очень субъективен.

выигрыш в скорости совсем небольшой. Мне кажется, это не то, на что нужно обращать внимание при разработке ПО. Оптимизация нужнаы лишь там, где она действительно нужна, и это далеко не тот случай.

nc.STRIEM
17.06.2008, 13:18
модеры создайте новую тему printf() vs iostream, и перенесите туда посты, пообсуждаем, тут просто флудить не охота.

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

Fata1ex
17.06.2008, 13:25
Какие же вещи, которые можно реализовать с помощью printf, нульзя реализовать с помощью iostream? В том-то и дело что iostream обладает всеми возможностями printf + имеются собственные, которые в printf невозможны.

Delimiter
17.06.2008, 14:16
Между Страупом и Рихтером такая же разница! Один учит абстрагироваться другой управлять компом! В одном случае имеем программера который не знает что строка должна завершаться нулем зато быстро взращивает ботву, а в другом программера который и с ексепшинами воюет так как ему нравится!

z01b
17.06.2008, 18:26
имхо юзать сишные ф-ции в с++ бред.

Ты тру чувак :D :D

ЗЫ Спасибо, поржал :cool:

Doom123
18.06.2008, 22:43
#include <iostream>
using namespace std;

#define size 10;
int main()
{
for(int i=0; i < size; i++)
{
cout<<"Test\n";
}
system("PAUSE");
return 0;
}

Почему комплится не хоче? если в цикле место size подставить 10 то всё норм... но я ведь обьявил что size это 10... делаю по книжке там такоей пример комплится норм... хотя у них BORLANDc++ а у меня visual studio c++

компилятор пишет


1>.\file.cpp(7) : error C2146: syntax error : missing ')' before identifier 'i'
1>.\file.cpp(7) : error C2059: syntax error : ';'
1>.\file.cpp(7) : error C2059: syntax error : ')'
1>.\file.cpp(8) : error C2143: syntax error : missing ';' before '{'

Forcer
18.06.2008, 22:47
#define size 10;
точка с запятой лишняя

Doom123
18.06.2008, 22:55
Forcer Ой точно))) чтото я уже совсем... автоматом эти точки с запятой ставлю

SVAROG
26.06.2008, 21:01
подскажите плз в чём прикол последняя строка ч ошибкой вылетает, компилирую vc++ 6;
#include "stdafx.h"
#include "winsock.h"
#include <string.h>
#include "winbase.h"
#include <stdlib.h>
#include <iostream.h>
#pragma comment(lib,"ws2_32")
int main(int argc, char* argv[])
{
char *file="C://host.txt";
HANDLE filhend;
DWORD dw;
int i,j;
char *buff, *stroka;
filhend=CreateFile(file,GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
DWORD razm=GetFileSize(filhend, NULL);
buff = (char *)malloc(razm+1);
stroka = (char *)malloc(razm+1);
for(i=0;i<=razm;i++) {stroka[i]='\0'; buff[i]='\0';}
//DWORD razm=GetFileSize(filhend, NULL);
//cout << razm;
ReadFile(filhend, buff, razm/*127*/, &dw, 0 );
CloseHandle(filhend);
MessageBox(0,buff,"123",MB_OK);
i=0; j=0;

while(j<=razm){

while((buff[j]!=0x0D) || (j>=razm))
{
stroka[i]=buff[j];
j++; i++;
}
MessageBox(0,stroka,"123",MB_OK);
//for(int k=0;k<=j;k++) stroka[k]='\0';
j=j+2; i=0;
//if (buff[i]='!') {break;}
}


//CloseHandle(filhend);

return 0;
}
=================
разобрался

SVAROG
26.06.2008, 21:19
:) :)

_empty
26.06.2008, 21:29
подскажите плз в чём прикол последняя строка ч ошибкой вылетает, компилирую vc++ 6;
}

Сам текст правильный, что именно за ошибка, скажи?

Forcer
26.06.2008, 22:14
SVAROG
заметил:
char *file="C://host.txt"
в винде обратный слэш, т.е. "C:\\host.txt"

p.s. нужно выкладывать текст ошибки.

Smapt
27.06.2008, 19:35
Есть код:

int BuffLen=(Param1c>>3)-(Param18>>3);
int EAX=(Param1c+Param18)&7;
if(EAX) Temp[BuffLen-2]&=(0xff)<<(8-EAX);
int ESI = Param18&7;


что делает ">>", "<<" и "&" ???

ToniKapuchon
27.06.2008, 20:05
Си толком не знаю, но подозреваю что смещение бит тройки на Param1c и Param18
& - логическое и

SVAROG
27.06.2008, 20:31
нужно переменную int загнать в char, я использовал
функцию itoa а она в конец массива дописывает два байта \x00\xCC как их оттуда убрать?
з.ы пишу почти первую программу на си))

Smapt
27.06.2008, 22:11
Есть char массив в С++

char * test=new char[5];
test[0]=0x39;
test[1]=0x32;
test[2]=0x33;
test[3]=0x34;

test=test+2; //массив сместится на 2 байта: test[0] бдет равно 0х33, test[4]=0x34 и т.д.


При попытке сделать такое смещение в С# вылетает ошибка Error 2 Operator '+' cannot be applied to operands of type 'byte[]' and 'int'

как быть???

Piflit
27.06.2008, 22:14
мб
test=*(&test+2);

Smapt
27.06.2008, 22:22
Piflit, нет, не помогло.

z01b
27.06.2008, 23:08
Piflit, нет, не помогло.
По идее, решение пифлита должно работать.
Интересно почему не работает :confused: