Просмотр полной версии : [c/c++] Новичкам: задаем вопросы
Страницы :
1
2
3
[
4]
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
xpicx.narod.ru/nor/normal.htm
Интересный метод.
а на других алгоритмах например RC5, RC6
спасибо и за этот код z01b но мне не надо алгоритмом сложения по модулю 2
извиняюсь я забил про хешфункции
MD5
MD5 - не шифрование а хеширование ...
xxxxxxxxxxxxxxx
11.02.2008, 19:20
скиньте кто то примерный код коннекта к к сайту на проверку его существования)
Ну допустим если вводиш ссылку оно конектитса и выводит слово "пашет" ну или " не пашет" буду очень благодарен.
проверку его существования)
Имхо, для этого достаточно resolve-сделать и всё.
hostent *ht;
ht=gethostbyname("site.com");
if(ht==0) printf("site.com does`n exist!");
else printf("site.com is exist!");
Кривовато. Например, для адреса "ofkshgkdhskghskfg.livejournal.com" он скажет что все ок, ибо резолв будет для любого поддомена) а вот контента там нет
даже можно на 3des или на любых алгоритмах в которых только один ключ
но без .net
Например, для адреса "ofkshgkdhskghskfg.livejournal.com" он скажет что все ок
Ну тогда уж если так дотошно проверять, то точно достоверно определить есть сайт на домене или нет невозможно, домен ofkshgkdhskghskfg.livejournal2.com и резольвится хорошо и 404 от сервака мы не получим.
struct hostent *ht;
struct sockaddr_in so;
int s,hconnect;
char *pack=(char*)malloc(1024);
if(pack!=0){
if(argc>0){
ht=gethostbyname(argv[1]);
if(ht==0) printf("%s does`n exist!\r\n",argv[1]);
else{
printf("%s exist!\r\n",argv[1]);
so.sin_family = AF_INET;
memcpy((char*)&so.sin_addr , ht->h_addr, ht->h_length);
so.sin_port = htons(80);
s= socket( AF_INET, SOCK_STREAM, 0 );
hconnect= connect( s, (struct sockaddr*)&so, sizeof( so ) );
if(hconnect!=-1)
{
printf("Successfully connected to %s\r\n\r\n",argv[1]);
sprintf(pack,"GET / HTTP/1.1\r\nHost: %s\r\nConnection: Close\r\n\r\n",argv[1]);
send(s,pack,1024,0);
memset(pack,0,1024);
recv(s,pack,1024,0);
printf("%s",pack);
}else printf("Can`t connect to %s\r\n",argv[1]);
}
}
}
Кривовато. Например, для адреса "ofkshgkdhskghskfg.livejournal.com" он скажет что все ок, ибо резолв будет для любого поддомена) а вот контента там нет
проверить это невозможно. точно так же, как и ashdn82374ajlksdhaksdasedaj.narod.ru
DNS народа тебе скажет, что всё ок. и пошел куда нибудь на рекламную страницу.
nc.STRIEM
12.02.2008, 18:55
можно получать IP заведома несуществующего домена например hksdjhksdjfsdfkjsdhk.narod.ru и с равнивать с ip домена который надо проверять, например check.narod.ru есле они совпадают то несуществует. Такой способ работает не везде
как узнать в файле сколка элементов в типе unsigned long в Си?
или с какой функций можна узнать сколка весть файл в байтах?
с какой функций можна узнать сколка весть файл в байтах?
функция -_filelength(int fd) , fd - дескриптор файла
Вот пример работы:
#include <io.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
int main()
{
int fh;
if( (fh = _open( "E:\\chess.cpp", _O_RDONLY, _S_IREAD )) != -1 )
{
printf( "File length : %ld kb\n", _filelength( fh ) );
_close( fh );
}
else
printf("Cant open a file!\n");
return 0;
}
Так же в WinAPI есть функция DWORD GetFileSize( HANDLE hFile, LPDWORD lpFileSizeHigh). Схема работы - такая же как и в приведённом примере. Последним параметром можно NULL поставить.
P.S. согласен с iv., первая фраза непонятна.
как узнать в файле сколка элементов в типе unsigned long в Си?
о_О Вопрос слегка непонятен.
Delimiter
15.02.2008, 00:05
sizeof(unsigned long);
symbioin
17.02.2008, 19:12
в чем может быть проблема? к меня выбивает ошыбку
void Cmy1Dlg::OnBnClickedButton1()
{
MessageBox("Antichat");
}
vs 2005
в чем может быть проблема? к меня выбивает ошыбку
void Cmy1Dlg::OnBnClickedButton1()
{
MessageBox("Antichat");
}
vs 2005
у данной апи 4 параметра заметь
MessageBox(0,"Antichat","Рулит!",0);
полюбому :(
#include "windows.h" есть?
При попытке скомпилить прогу, борланд выдает
[Linker Error] Unresolved external 'WSAConnect' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ
Подскажите как это исправить? Вроде с инклудами все нормально и библиотеки соответствующие присутствуют
#775 'WSAConnect' - такого нет. Есть 'WSAStartup' и 'connect'
Да ладно? А это что тогда: http://msdn2.microsoft.com/en-us/library/ms741559(VS.85).aspx
?
В первый раз вижу... Всё равно, попробуй просто connect...
Сообщение от symbioin
полюбому
попробуй этот код у миня нормально компилируется vs2005
#include<windows.h>
int main()
{
TCHAR* text=TEXT("Antichat"),*kep=TEXT("Рулит!");
MessageBox(0,text,kep,0);
return 0;
}
атак можеш использовать MessageBoxA(0,(LPCSTR)"Antichat",(LPCSTR)"Рулит!",0);
При попытке скомпилить прогу, борланд выдает
[Linker Error] Unresolved external 'WSAConnect' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ
Подскажите как это исправить? Вроде с инклудами все нормально и библиотеки соответствующие присутствуют
Хедер winsock2.h подключен? Перед вызовом WSAConnect стоит вызов WSAStartup?
Ну и в конце кода должно быть WSACleanup
Подскажите как сделать на С. Кароче нужно перепробовать все значения числа, переставляя цифры. Причем неизвестно из скольки цифер состоит число.
Например, в переменной задано число 21, его нужно прочитать как 1, 2, 12, 21.
P.s. я в С нуб :(
Подскажите как сделать на С. Кароче нужно перепробовать все значения числа, переставляя цифры. Причем неизвестно из скольки цифер состоит число.
Например, в переменной задано число 21, его нужно прочитать как 1, 2, 12, 21.
P.s. я в С нуб :(
Вообще это алгоритм перебора паролей из выбранного набора символов для брутера
Их есть много у меня
Медленный, но удобный:
#define MAXstr 256
#define MAXsymbol 10
#define initdata(X,Y,Z) for(int x=0;x<(Y);x++) X[x]=Z
int i;
char s[MAXstr];
sprintf((char *)&s,"%d",1221);
int is[MAXsymbol];initdata(is,MAXsymbol,0);
int length=0;
char sall[MAXsymbol];
for (i=0;s[i]!=0;i++) is[s[i]-'0']=1;
for (i=0;i<MAXsymbol;i++) if (is[i]==1) {sall[length]='0'+i;length++;};sall[length]=0;
printf("integer %s = %s \n",s,sall);
int size=1;
int sizeold=size;
char data[MAXsymbol],str[MAXstr];
#define incarray(X) data[X]++;if (data[X]==length) { data[X]=0; if (size<(X+2)) size++
initdata(data,MAXsymbol,0);
while (size<length+1) {
for (i=0;i<MAXsymbol;i++) if (i<size){str[i]=sall[data[i]];}else{str[i]=0;}
printf(" %s ",str);
//hands make
incarray(0);incarray(1);incarray(2);incarray(3);in carray(4);
incarray(5);incarray(6);incarray(7);incarray(8);in carray(9);
}}}}}}}}}}// array to MAXsymbol
if (sizeold!=size) {initdata(data,MAXsymbol,0); sizeold=size; printf("\n");}
}//while (size<length+1)
integer 1221 = 12
1 2
11 21 12 22
P.s.
//hands make
incarray(0);incarray(1);incarray(2);incarray(3);in carray(4);
incarray(5);incarray(6);incarray(7);incarray(8);in carray(9);
}}}}}}}}}}// array to MAXsymbol
Можно заменить на автомат:
for (int X=0;X<MAXsymbol;X++) {
data[X]++;if (data[X]==length) { data[X]=0; if (size<(X+2)) size++; } else break;
}
Pls.у каго ест примеры передача данных с помошью инет и как создать сервер и клиента с помошью API или в Си?
KSoniX
Посмотри здесь:
http://ishodniki.ru/
Есть у когонибудь исходник сканера на уязвимости на С++? Или где можно прочитать про работу с сайтами на С++? Прошу если неграмотно выразился сильно не ругать..
Можноли в Билдере в ячейку StringGrid поместить веб-ссылку, при нажатии на которую будет открыватся страница в браузере?
Или где можно прочитать про работу с сайтами на С++?
Обычный Winsock + протокол http ...
http://old.antichat.ru/crackchat/HTTP/http.html
http://ru.wikipedia.org/wiki/HTTP
Jes спс тебе с этим я более мение разобрался. А ни у кого нету исходничка на С++ на подбор таблиц, или столбцов?
Как в Buildere при работе с idHTTP1 избавится от ошибки EIdsocketerror #10054
А ещё лучше скажите как сделать чтоб при поевлении любой ошибки оно писало что произошла ошибка и продлжоло работу дальше, а не завергало приложение.
Подскажите пжалста.
Как получить картинку с сервера?
делаю следующее...
char url[] = "/i/switch-yaru.png";char host[] = "img.yandex.ru";
sprintf( request, "GET %s HTTP/1.1\r\nAccept: image/png, image/gif\r\nHost: %s\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\nConnection: Close\r\n\r\n", url, host );
send( s, request, strlen( request ), 0 );
recv( s, response, 1024*32, 0);
В результате получаю ответ сервера:
HTTP/1.1 200 OK
Connection: close
Expires: Tue, 22 Apr 2008 15:56:59 GMT
Cache-Control: max-age=5184000
Content-Type: image/png
Accept-Ranges: bytes
ETag: "490032732"
Last-Modified: Fri, 27 Jul 2007 11:27:33 GMT
Content-Length: 296
Date: Fri, 22 Feb 2008 15:56:59 GMT
Server: lighttpd/1.4.18
???Как получить саму PNG'ку???
во-первых ты неправильно используешь функцию recv. Здесь лучше было бы принимать данные в цикле пока сервер не закроет соединение. Картинка будет идти сразу после заголовка http-ответа(конец ответа легко определить по последовательности \x0D\x0A\x0D\x0A)
если же лень писать правильно то после получения заголовка можешь просто вызвать
recv( s, response, 1024*32, 0);
еще раз, на этот раз там будет картинка
у меня такая проблема : передаю проге в командной строке IP адрес,допустим 127.0.0.1,но когда начинаю заполнять структуру sockaddr_in, то оказывается что адрес равен 27.0.0.1, куда делся первый символ?
З.Ы. строка вида "proga 127.0.0.1 param1 param2"
после получения заголовка можешь просто вызвать
recv( s, response, 1024*32, 0);
еще раз, на этот раз там будет картинка В этом и проблема. Response содержит 5 символов, при весе картинки 2Кб.
После второго вызова делаю:
ofstream f_gif;
f_gif.open("1.gif", ios::binary);
f_gif<<response;
f_gif.close();
???Или записывать в файл put'ом???
не. ну почему все перешли на этот си++? хз какая хрень..
делай recv в цикле. насколько я знаю функция возвращяет сколько байтов она прочитала.
получается так.
while (bytes=recv(s, response, 1024)>0) {
d=open("file", O_RDRW);
write(d, response, bytes);
}
так по идее должно получится
Delimiter
25.02.2008, 16:23
не. ну почему все перешли на этот си++? хз какая хрень..
делай recv в цикле. насколько я знаю функция возвращяет сколько байтов она прочитала.
получается так.
while (bytes=recv(s, response, 1024)>0) {
d=open("file", O_RDRW);
write(d, response, bytes);
}
так по идее должно получится
... да потому что такими циклами самими по себе не сделать мало мальски хорошую программу, всем приходится привыкать к реалиям мастдая. Если цикл значит новая нитка(thread).... далее по Рихтеру и С++
а если не нитка а асинхронные сокеты, то далее по Win32socket.faq и С++!
Ламерский вопрос по С++ (Borland Turbo C++)
Возникает событие во второй форме (Unit2.cpp), как заставить выполнятся код, который находится в первой форме (Unit1.cpp) (функцию ну или другое событие).
(Думал создать невидимый чекбокс и нажимать его - но это как-то не правильно) :)
сделать функцию в первой форме и при возникновении событии во второй форме вызывать эту функцию?
вначале сделай хидер Unit1.h там опиши функцию, потом имплементацию функции в Unit1.cpp.
дальше инклуди Unit1.h в Unit1.cpp и Unit2.cpp и при событии вызывай ф-цию из Unit1.cpp. посмотрим что произойдет.
несколько абстрактный пример
Unit1.h
int event_handler(int arg);
Uni1.cpp
#include "Unit1.h"
int event_handler(int arg);
{
...
}
Unit2.cpp
#include "Unit1.h"
int main(int argc, char *argv[])
{ ...
if(event) {
event_handler(event);
};
...
}
Я что-то протупил. Так пробовал (не работало) - решил еще раз сделать чтобы конкретно сказать что говорит компилятор (интуитивно догадываюсь, но хотелось бы уточнить.. :)).
В общем заработало. (черт его знает - видимо была опечатка)
symbioin
26.02.2008, 04:20
помогите найти скрипт создания md5
Занимаюсь С++, не могу понять в чем ошибка?
Программа должна считать ср. арифм. 2-х чисел (переменной - а, и переменной - b)
Вот иходник:
#include <iostream.h>
void main ()
{
int a;
cout<<"vvedite pervoe chislo\n";
cin>>a;
int b;
cout<<"vvedite vtoroe chislo\n";
cin>>b;
int c;
c=(a+b)/2;
cout<<"srednee arifmeticheskoe="<<c;cout"\n";
}
Компилятор Visual C++ 6.0 выдает ошибку:
"c:\program files\microsoft visual studio\myprojects\dz\srednee_arifmeticheskoe_dvuh_ chisel\source.cpp(13) : error C2143: syntax error : missing ';' before 'string'
Error executing cl.exe."
cout<<"srednee arifmeticheskoe="<<c;cout<<"\n";
symbioin
тут ты ответа на этот вопрос не найдешь. никто не может написать СКРИПТ на си/си++ ибо не существует интерпретатора языка си.
во вторых ты не можешь СОЗДАТЬ md5. ты можешь сгенерировать md5 хеш.
в третиьх. я не знаю ((*
2 > symbioin
http://ishodniki.ru/art/artshow.php?id=233
Где почтать про работу Client сокетов в многопоточном режиме? (с++)
Где почтать про работу Client сокетов в многопоточном режиме? (с++) В документации к используемым фреймворкам/библиотекам либо в документации ОС, если не используются библиотеки и фреймворки.
Delimiter
28.02.2008, 21:22
Непонятен вопрос..... а что там читать ??? Там не пахнет никакими семафорами и другими средствами синхронизации. Сокет понятие уникальное для сессии. На каждый поток обычно уникальный сокет.... то есть нитка не видит что сокетов много , у нее он СВОЙ.
..... есть только один вариант в который СТРАШНО верить потоков много а сокет один, неужели ты это имел ввиду??? Но насколько я знаю винсокдлл.... она все запросы вси рафно ставит в очередь.... коллизий в ней не будет. Критические секции тоже не стоит ставить на recv и send для одного "глобального" сокета.... для систем с вытесняющей многозадачностью эти команды не разбиваются на составные части.... а выполняются как ОДНО-ЦЕЛОЕ, то есть все равно ктото будет первым а ктото вторым!
Добрый день,
начал изучение с++, но появился очень простой вопрос, на который, к сожалению, в гугле одназначно ответить не могут... Вопрос такой: "Где лучше прописыватть методы класса, в нем или вне его?" Вроде удобнее первый, но так нигде не пишут :(.
Спасибо за внимание, уделенное моему вопросу.
Delimiter
01.03.2008, 01:09
пишут и так и так встречал оба варианта.... поэтому как нравится.... вот к примеру мне не нраивтся ООП ваапще.... дык я и не "кашляю" даже 8))))
... доходит до смешного, если мну нужен код.... я выдираю из классов и делаю понятные только мне функции и структуры
Меня лично учили так(Дейтелы пишут также): нужно отделять определение(интерфейс) от реализации. В объявлении класса не должна находиться реализация методов. Т.е. внутри определения класса - только прототипы методов. Класс - это конечный программный продукт. Клиентам, которые пользуются классом, совсем не обязательно видеть, как реализованы методы. Им нужно знать какими методами можно воспользоваться и какие результаты будут получены. Поэтому внутри класса методы должны находиться в следующем порядке: сначала public, далее protected, и лишь потом private.
Цитата из Дейтелов: Информация, являющаяся важной для интерфейса класса, должна включаться в заголовочный файл. Информация, которая будет использоваться только внутри класса и не потребуется клиентам, должна находиться в неопубликованном исходном файле. Это еще один пример принципа минимума привилегий. Клиентам класса не обязательно видеть его исходный код для того, чтобы пользоваться этим классом.Однако клиентам необходимо иметь возможность компоноваться с объектным кодом класса. Т.е. для класса создаем 2-а файла: .cpp(с реализацией методов) и .h(с объявлением класса). В свои включаем хедер, проект собираем вместе с файлом .cpp. Это не касается встроенных функций. Они должны находиться в объявлении класса. И ещё нужно использовать директивы препроцессора #ifndef, #define, #endif чтобы не допускать повторного включения заголовочных файлов.
P.S. Страуструп: Хорошо спроектированный тип, определяемый пользователем, отличается от встроенного только тем, как он определён, а не тем, как он исползуется.
Меня лично учили так(Дейтелы пишут также): нужно отделять определение(интерфейс) от реализации. В объявлении класса не должна находиться реализация методов. Т.е. внутри определения класса - только прототипы методов. Класс - это конечный программный продукт. Клиентам, которые пользуются классом, совсем не обязательно видеть, как реализованы методы. Им нужно знать какими методами можно воспользоваться и какие результаты будут получены.
Спасибо, т.е. все уперается в инкапсюляцию...
А вот конструкторы и деструкторы описываются в теле класса?
Нет. Вся реализация, в том числе конструкторов и деструкторов, вне объявления класса. Хотя если вы пишите небольшой класс, возможно и не стоит строго следовать всем канонам, но зато это войдёт у вас в привычку.
Меня лично учили так(Дейтелы пишут также): нужно отделять определение(интерфейс) от реализации. В объявлении класса не должна находиться реализация методов. Т.е. внутри определения класса - только прототипы методов. Класс - это конечный программный продукт. Клиентам, которые пользуются классом, совсем не обязательно видеть, как реализованы методы. Им нужно знать какими методами можно воспользоваться и какие результаты будут получены. Справедливо только для C++. ИМХО это крайне неправильно(ну в других языках даже такой возможности нет), но если так не делать, появится куча ошибок при создании проекта, когда один класс используется в нескольких.
Связано с тем, что в С++ нельзя скомпилить файл, не зная прототипов.
Где можно скачать исходники джойнера на С++?
Есть ли у кого нибудь исходники калькулятора на С++?
brasco2k
02.03.2008, 18:55
Помогите написать такой код на C#:
Чтобы на каждый тик таймера выделялась следующая буква из текстогого поля...
Нужна помощь в C#
Надо сделать таблицу как в excel'e
Скажем чтоб было 3 строки и 10 столбцов.
Подскажите плз.
Есть ли у кого нибудь исходники калькулятора на С++?
это (http://ishodniki.ru/list/info.php?cat=6&id=7648&show=cpp_algoritms) подходит? :)
ForNeVeR
03.03.2008, 15:55
Подскажите пожалуйста, как в MS Visual C++ 2008 .NET сделать, чтобы 2 неких .h файла (например, 2 формы) могли получить доступ к классам друг друга? А то делаю в одном #include "file2.h", в другом #include "file1.h" - в итоге классы друг друга они не видят...
попробуй сделать один хидер там объявить класс. потом этот хидер инклудить в те два хидера.
ForNeVeR
03.03.2008, 16:14
Дело в том, что в моём случае в одном из этих хидеров и объявлен класс, которому нужен доступ к классу формы, объявленному в другом хидере. Причём источник ошибок для меня совершенно неясен: просто "не виден" в одном файле класс, объявленный в другом. Видимо, это как-то связано именно с тем, что файлы ссылаются друг на друга... Хотя #pragma once стоит в обоих и сообщений о достижении максимальной глубины вложеннности #include'ов (что происходит если её убрать ;) ) не появляется.
хз.. может че то перепутал при объявлении класса?
какая ошибка? ну и исходники в студию плз. я особо в с++ не силен, но посмотрим что можно сделать
ForNeVeR
03.03.2008, 16:31
Исходники длинные, но вот существенные части:
// CommonClass.h
#pragma once
#include "Form1.h"
//#include "CommonClass.cpp"
using namespace System;
// . . .
using namespace ICQ_client;
public ref class CommonClass{
// Объявления методов, параметров и т.д.
};
// Form1.h
#pragma once
#include "CommonClass.h"
using namespace System;
// . . .
namespace ICQ_client
{
public ref class Form1 : public System::Windows::Forms::Form
{
// . . .
CommonClass^ common; // Тут вылазит ошибка C2143: syntax error : missing ';' before '^', т.е. он не понимает, что CommonClass - это название класса.
//. . .
};
}
Причём если в CommonClass.h не инклудить Form1.h, то в Form1 класс виден. И наоборот, если #include "CommonClass.h" убрать из файла Form1.h, файл CommonClass.h проходится нормально. Была мысль, что что-то напутано с ; , но это кажется маловероятным.
а что у тебя в CommonClass.cpp лежит?
я чета не видел чтобы cpp файлы инклудили..
ForNeVeR
03.03.2008, 17:00
а что у тебя в CommonClass.cpp лежит?
я чета не видел чтобы cpp файлы инклудили..
Извиняюсь, нечаянно дописал при переносе кода. На самом деле там такого, конечно, нет :)
Ну и для понимания дао программы действительно нужно: CommonClass.cpp
#pragma once
#include "StdAfx.h"
#include "CommonClass.h"
using namespace System::Text;
// . . .
CommonClass::CommonClass()
{
}
bool CommonClass::flapHeader(...)
{
// . . .
}
// . . .
ForNeVeR
04.03.2008, 21:43
Ладно, в общем, всё, переделал по-другому, пришлось часть функций класса рассовывать по формам, но вроде (тьфу-тьфу-тьфу) работает. Всё равно +1 за попытку помочь ;)
Подскажите пожайлуста как с помощью MS Visual C++ откомпилировать этот исходник..
С подобным сталкиваюсь первый раз..
void main()
{
// Объявим переменные, необходимые для работы
HWND hManForm,hGroupBox,hEdit,hComboBox; // Идентификаторы форм
char* pUIN; // Указатель на буфер для UIN
char* pPass; // Указатель на буфер для пароля
int iUIN; // Длина UIN
int iPass; // Длина пароля
// Найдем окно диалога авторизации
hManForm=FindWindow("TManForm",0);
// Расположенная на нем группа элементов управления
hGroupBox=FindWindowEx(hManForm,0,"TGroupBox",0);
// Список с UIN'ами
hComboBox=FindWindowEx(hGroupBox,0,"TComboBox",0);
// Получим длину текста в списке
iUIN=SendMessage(hComboBox, WM_GETTEXTLENGTH, 0, 0)+1;
// Выделяем необходимую память для буфера
pUIN=(char*)LocalAlloc(0, iUIN);
// Получим непосредственно текст
SendMessage(hComboBox, WM_GETTEXT, iUIN, (long)pUIN);
// Поле с паролем
hEdit=FindWindowEx(hGroupBox,0,"TEdit",0);
// Дальше все по аналогии с UIN'ом
iPass=SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0)+1;
pPass=(char*)LocalAlloc(0, iPass);
SendMessage(hEdit, WM_GETTEXT, iPass, (long)pPass);
//Выведем что получилось
cout << "[!!!]Found for: "<< pUIN << "\tPassword: " << pPass;
// Освободим память
LocalFree(pUIN);
LocalFree(pPass);
}
Подскажи как вооше от компелировать в lcc-win32
когда я пытаюсь откомпилировать исходный код sdbot'a выдаёт ошибку
ForNeVeR
06.03.2008, 15:39
_Sanich
Чтобы скомпилировать в VS 2008 Express Edition сделал следующее: File > New > Project... > Win32 console application. Затем файл <Имя_проекта.cpp> привёл к такому виду:
#include "stdafx.h"
// Подключим модули, нужные для работы программы
#include <windows.h>
#include <iostream>
// Для удобства работы с cout
using namespace std;
void main()
{
// Объявим переменные, необходимые для работы
HWND hManForm,hGroupBox,hEdit,hComboBox; // Идентификаторы форм
char* pUIN; // Указатель на буфер для UIN
char* pPass; // Указатель на буфер для пароля
int iUIN; // Длина UIN
int iPass; // Длина пароля
// Найдем окно диалога авторизации
hManForm=FindWindow(L"TManForm",0);
// Расположенная на нем группа элементов управления
hGroupBox=FindWindowEx(hManForm,0,L"TGroupBox",0);
// Список с UIN'ами
hComboBox=FindWindowEx(hGroupBox,0,L"TComboBox",0);
// Получим длину текста в списке
iUIN=SendMessage(hComboBox, WM_GETTEXTLENGTH, 0, 0)+1;
// Выделяем необходимую память для буфера
pUIN=(char*)LocalAlloc(0, iUIN);
// Получим непосредственно текст
SendMessage(hComboBox, WM_GETTEXT, iUIN, (long)pUIN);
// Поле с паролем
hEdit=FindWindowEx(hGroupBox,0,L"TEdit",0);
// Дальше все по аналогии с UIN'ом
iPass=SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0)+1;
pPass=(char*)LocalAlloc(0, iPass);
SendMessage(hEdit, WM_GETTEXT, iPass, (long)pPass);
//Выведем что получилось
cout << "[!!!]Found for: "<< pUIN << "\tPassword: " << pPass;
// Освободим память
LocalFree(pUIN);
LocalFree(pPass);
}
Обрати внимание на буквы "L" перед строковыми константами (переводит строку в Unicode) - без этого (по крайней мере, в 2008 студии) работать не стало.
После указанных действий нажал F7 и всё скомпилировалось. Извини, если рассказал излишне подробно, но просто мне неясно, на каком этапе возникли затруднения, поэтому постарался описать так, чтобы стало понятно даже чайнику ;)
<навеяно предыдущим постом>
Ребят, а у кого-нибудь вообще запустилась Msdn9, которая идет с Vs2008?
Vs2008 - АД. =\
</навеяно предыдущим постом>
ForNeVeR
07.03.2008, 16:06
У меня урезанная версия Express Edition, MSDN (тоже урезанная) идёт без проблем... Половины хелпа по нативным функциям нет (слава Ктулху, соединение с онлайн-версией работает стабильно). Однако запускается...
В Си как можна узнать активного раздела и имия пользователя?
#include <unistd.h>
#include <sys/types.h>
uid_t getuid(void);
это чтобы узнать уид юзверя.
или же если нужно конкретно имя то
int main()
{
system("echo $USER");
return 0;
}
выведет на стандартный вывод имя юзверя
а как узнать активный раздел?
KSoniX pwd
system("pwd"); : :rolleyes:
народ помогите в С++!!!
нужно в динамический масив добавить один элемент за пределами его памяти (т,е увеличить дин. массив на единицу сохранив его прежнии элементы)
Хочется это сделать это как можно быстрее (в смысле не заниматся копированием массива, потом увеличением и т.д. ), ибо задача на комбинаторику.
Delimiter
08.03.2008, 19:36
что такое динамический массив из ваших уст?
а вообще списки это простейшая реализация того о чем вы говорите
допустим есть елемент
struct el
{
//----------
само значение
//----------
char *addr_prev; адрес предыдущего элемента
char *addr_next; адрес следующего элемента
};
тогда мы можем связывать эти элементы в том количестве в котором захотим используя new
и delete для удаления
к примеру, вот такая "штука":
int* p;
p=new int [n];
Delimiter
08.03.2008, 19:44
вот такая "фигня"
int* p;
p=new int [n];
в этот ничего не добавишь.... только глупые варианты с созданием нового массива и копированием
ForNeVeR
08.03.2008, 19:45
В вашем случае лучше организовать настоящую динамическую структуру, как сказал Delimiter, а не пользоваться подобными массивами. Хотя поначалу, конечно, с ней несколько непривычно работать.
Хотя: Проблема таких структур состоит в том, что мы не можем "по заказу" получить сразу n-й элемент, для этого придётся последовательно перебирать все, что может не подойти для комбинаторных задач.
Я в таких случаях создаю массив такой размерности, которой заведомо хватит для всех необходимых действий, однако определение этой длины также может стать нетривиальной задачей в комбинаторике.
>>>в этот ничего не добавишь.... только глупые варианты с созданием нового массива и копированием
:-e, да... халява не прокатила :)
Спасибо...
Например если условие что не нужно юзать обязательно массивы... то можно использовать вектора (что само по себе является очень мощной вещью, но массивы работают по быстрее)
vector<string> stroka // создали вектро типо строка
....
stroka.push_back(сюда какуюнить строку) // записываем в конец вектора
если хочеш посмотреть остальные функции кури тута и на гугле ;
http://www.cppreference.com/cppvector/index.html
#include <windows.h>
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TProcessEntry32 pe;
}
При попытке запуска этого в Builder вылетает: [C++ Error] Unit1.cpp(22): E2451 Undefined symbol 'TProcessEntry32'
В чём проблема?
Smapt
добавь
#include <tlhelp32.hpp> или #include <tlhelp32.h>
как узнать метку активного раздела и еще нада узнать из какой раздела загружен винда?
из какой раздела загружен винда?
API: GetWindowsDirectory();
Оттуда извлекаешь диск.
Каким образом возможно организовать передачу данных между потоками? И есть ли уже готовая функция в С\С++ для чтения строки по словам? или же поридется свою писать...
советчики интересные пошли. говорят же:
>>передача данных
и какие объемы ты передашь через глобальную переменную? а ведь еще и синхронизировать нужно запись\чтение. именно для организации передачи данных с их повсеместным чтением для общих задач эффективнее всего использовать неименованные пайпы (libc - man pipe).
>> поридется свою писать...
вам не стыдно? медвежьи услуги обычно не в почете. strtok()...
>>ну не знаю человек не написал
так ты читай чего я написал про синхронизацию.
>>стыдно.. извините пожалуйста больше постить не буду, а то и вправду толку мало.
ну вот и молодец. если бы большинство форумчан додумались до этого, то многим хорошим людям стало бы легче.
спасибо desTiny все получилось
а в лине как можна узнать разделы root и swap и туда доступ записи и чтения с помошью СИ
и как получить высокий доступ на разделы не зная пасса root?
корректнее сформулируй вопрос.
вот например как ты собираешься (и главное почему) что то записивать в раздел свапа?
Как в ВСВ замутить расшифровку gZip?
гзип - это не шифровщик, а архиватор. Поищи в сети пакет zlib, собери длл, почитай доки, покури примеры
PLS как узнать user folder в любом винде 95, 98, 2000, NT... в CИ сменя +
PLS как узнать user folder в любом винде 95, 98, 2000, NT... в CИ сменя +
function GetUserProfileDerictory() (http://msdn2.microsoft.com/en-us/library/bb762280(VS.85).aspx)
у каго есть пример на функцию GetUserProfileDerictory() скиньте PLS.
столкнулся с такой проблемой.
мне нужен форматированный вывод в сокет. при помощи моей любимой функции write(2) это не получится.
хочу использовать функцию fprintf(3). она в качестве своего первого параметра получает указатель на переменную типа FILE. теперь у меня задача передать дескриптор сокета который я уже открыл функции fprintf. вот что я сделал
//тут что то
FILE *file;
//тут тоже
s=socket(PF_INET, SOCK_STREAM, 0);
//тут код
file=fdopen(s, "a");
fprintf(file, "формат", текст);
тут что то не правильно?
noobyara
12.03.2008, 20:02
to Ksonix
GetUserProfileDerictory() будет работать в NT и выше
zythar
так неправильно.
Намного прикольнее будет если:
int sockprintf(int hOut, char *f, ...)
{
char s[1024];
va_list a;
unsigned long l;
va_start(a,f);
l=wvsprintf(s,f,a);
va_end(a);
send(hOut,s,l,0);
return(l);
}
Использовать примерно так:
s=socket(PF_INET, SOCK_STREAM, 0);
//...
sockprintf(s, "формат", "параметры");
Там не очень безопасно в плане переполнения но если аккуратно то пойдёт
а с какой функций можно взять user folder ниже NT в виндах
а с какой функций можно взять user folder ниже NT в виндах
А разве не 'C:\My Documents\' ?
Сорри, если что-то напутал, но вроде в 9x оно всё там было...
: undefined reference to `wvsprintf'
это в какой библиотеке?
zythar,
видимо `wsprintf`
хз.. на этот способ забить придется. лень искать либы. что нить другое.
впринципе вопрос можно переформулировать так: нужен форматный вывод файл дескриптор которого уже известен
desTiny вот эту директорию как взять с программным способом
и кто нибуть использовал функцию GETDATE() или что нибуть в роди этого толка с примером PLS...
"вот эту директорию как взять с программным способом"
м-м-м...
char[] FolderName = "C:\My Documents";
Так вроде=)
desTiny а если винда на другом разделе
банально приходит в голову:
s1 = "0:\My Documents"
s2 = "0:\Мои документы"
for (char a = "c"; a < "z"; a++){
s1[0] = a;
s2[0] = a;
//проверяем существование директоии s1 и s2, если нашли то выходим...
}
мне нада чтобы было универсально для всей винды
и как создать системный скрытый папку в Си
desTiny идея та хорошая но если у нево на двух директориях стоит винда то тагда что делать?
на виндах ниже ИТ работает ли функция GetWindowsDirectory()??
noobyara
13.03.2008, 19:28
на виндах ниже ИТ работает ли функция GetWindowsDirectory()??
ниже NT? да.(с 95 начиная).
Еще по твоей теме можешь посмоьреть это http://delphiworld.narod.ru/base/windows_name_spaces.html
ниже NT? да.(с 95 начиная).
Еще по твоей теме можешь посмоьреть это http://delphiworld.narod.ru/base/windows_name_spaces.html
Да? А Msdn говорит, что нет:
Requires Windows Vista, Windows XP, or Windows 2000 Professional.
http://msdn2.microsoft.com/en-us/library/ms724426(VS.85).aspx
: undefined reference to `wvsprintf'
это в какой библиотеке?
Инфа из SDK:
Import library: user32.lib
Header file: winuser.h
noobyara
13.03.2008, 21:00
Да? А Msdn говорит, что нет:
GetWindowsDirectory
Retrieves the path of the Windows directory. The Windows directory contains such files as applications, initialization files, and help files.
This function is provided primarily for compatibility. Applications should store code in the Program Files folder and persistent data in the Application Data folder in the user's profile. For more information, see ShGetFolderPath.
UINT GetWindowsDirectory(
LPTSTR lpBuffer,
UINT uSize
);
Parameters
lpBuffer
[out] A pPointer to a buffer that receives the path. This path does not end with a backslash unless the Windows directory is the root directory. For example, if the Windows directory is named Windows on drive C, the path of the Windows directory retrieved by this function is C:\Windows. If the system was installed in the root directory of drive C, the path retrieved is C:\.
uSize
[in] The maximum size of the buffer specified by the lpBuffer parameter, in TCHARs. This value should be set to MAX_PATH.
Return Value
If the function succeeds, the return value is the length of the string copied to the buffer, in TCHARs, not including the terminating null character.
If the length is greater than the size of the buffer, the return value is the size of the buffer required to hold the path.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The Windows directory is the directory where an application should store initialization and help files. If the user is running a shared version of the system, the Windows directory is guaranteed to be private for each user.
If an application creates other files that it wants to store on a per-user basis, it should place them in the directory specified by the HOMEPATH environment variable. This directory will be different for each user, if so specified by an administrator, through the User Manager administrative tool. HOMEPATH always specifies either the user's home directory, which is guaranteed to be private for each user, or a default directory (for example, C:\USERS\DEFAULT) where the user will have all access.
Terminal Services: If the application is running in a Terminal Services environment, each user has a private Windows directory. There is also a shared Windows directory for the system. If the application is Terminal-Services-aware (has the IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE flag set in the image header), this function returns the path of the system Windows directory, just as the GetSystemWindowsDirectory function does. Otherwise, it retrieves the path of the private Windows directory for the user.
Example Code
For an example, see Getting System Information.
Requirements
Client Requires Windows Vista, Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, or Windows 95.
Server Requires Windows Server "Longhorn", Windows Server 2003, Windows 2000 Server, or Windows NT Server.
Header Declared in Winbase.h; include Windows.h.
Library Use Kernel32.lib.
DLL Requires Kernel32.dll.
Unicode Implemented as GetWindowsDirectoryW (Unicode) and GetWindowsDirectoryA (ANSI). Note that Unicode support on Windows Me/98/95 requires Microsoft Layer for Unicode.
See Also
System Information Functions
GetCurrentDirectory
GetSystemDirectory
GetSystemWindowsDirectory
Send comments about this topic to Microsoft
Build date: 2/1/2007
Возможно они что-то изменили в этой функции, у меня в MSDN(на компе), пишут что поддерживается, что ты указал то не поддерживается. Build date: 2/28/2008 - Online MSDN, видимо нужно верить ему...
можно использовать getenv(). находится в stdlib.h. пример:
printf("%s", getenv("HOMEPATH"));
Инфа из SDK:
Import library: user32.lib
Header file: winuser.h
значет мне поюзать не дано ((*
я под фряхой
значет мне поюзать не дано ((*
я под фряхой
Вот как. Там наверно сработает просто если fprintf(sock,"формат",параметры);
zythar
Пиши в сокет с помощью send, sendto, write...
как создать системный скрытый папку в Си? Pls...
Апишная функция
CreateProceess() - почитай в MSDN-e
В качестве параметра что делать в первый раз: "mkdir hzhz", а во-второй: "attrib +hs hzhz" - вроде так... Если напутал, то посмотри attrib /?
>>zythar
>>Пиши в сокет с помощью send, sendto, write...
дак ни send ни write ни sendto(насчет этого точно не знаю но врядли) не могут делать форматный вывод в сокет. а именно это мне надо.
2bons
пробовал делать fprintf(s, "format", vars). итог segmenation fault.
KSoniX
Для создания папки есть функция CreateDirectory() (http://msdn2.microsoft.com/en-us/library/aa363855.aspx). Для изменеия аттрибутов папки и конкретно для скрытия папки есть функция SetFileAttributes (http://msdn2.microsoft.com/en-us/library/aa365535.aspx). Находятся в windows.h. Небольшой пример:
char* dir = "E:\\testfolder";
CreateDirectory(dir, 0);
SetFileAttributes(dir, FILE_ATTRIBUTE_HIDDEN);
Добавление:
можно использовать функцию system(). Находится в stdlib.h. небольшой пример:
system("mkdir E:\\testfolder");
system("attrib +H /S /D E:\\testfolder");
такой вариант пришёл в голову после поста desTiny ))
Дык это, а почему нельзя подготовить строку,например, с помощью sprintf, а потом отсылать в сокет?
sprintf (stroka, "STRING:%s %d", var1, var2);
write (sock, stroka, strlen(stroka));
Хотя этот код грешит переполнением буфера :)
нельзя ибо когда я передаю массив символов. а мне нужно передать сначала целое потом массив символов потом опять целое итд.
сервак просит как же я могу отказать ((*
Как поместиь на форму Gif анимашку используя WinApi
P(i)n*Fl0p1
18.03.2008, 04:08
У меня есть на компе книжка самоучитель по с++,решил не заморачиваться читая 800 страниц с монитора купить эту книгу...купил.в книге в которой на компе не написано что надо использовать std::к cout,cin,endl, а в книжке печатной я смотрю и вижу во всех примерах этот std::,неужто без него нельзя обойтись просто написав using namespace std в самом начале?
или вообще не писать в книжке(печатной)написано что обязательно так как это стандарт ANSI..раньше писал без std:: все было норм,а сейчас я прям в недоумении..можно обойтись без этого? :confused: :rolleyes:
извиние если вопрос глупый..
echobyte
18.03.2008, 05:36
неужто без него нельзя обойтись просто написав using namespace std в самом начале
ну using namespace std этож все-таки новый стандарт
вобще я не люблю читать книжки по программированию в pdf.. куча ошибок почти везде(.. но чаще всего других вариантов просто нет
ну using namespace std этож все-таки новый стандарт
неужели?
неужто без него нельзя обойтись просто написав using namespace std в самом начале
Можно, но не нужно. namespace'ы для того и сделали, чтоб разделять имена по-нормальному, а ты обратно их в кучу кидаешь
Как поместиь на форму Gif анимашку используя WinApi
А ты знаешь как поместить статическую?
echobyte
19.03.2008, 06:25
неужели?
я к тому, что не во всех книжках по cpp пространство имен указано по новому стандарту
ForNeVeR
19.03.2008, 07:29
я к тому, что не во всех книжках по cpp пространство имен указано по новому стандарту
Так если читателю (т.е. тебе) это известно, то всё ок! :)
Ну а если серьёзно: как книжки, изданные до введения std::, могут писать про него? Уверен, что стоящие книги переиздаются, однако уже купленные издания более ранних версий измениться не смогут!
запарился я((. придется спросить.
есть visual c++, borland c++. с чего начать то? там большая разница? скачивал книги, а там с++ такой, с++ сякой. с чего начать то?
решил начать с с++ за 21 день. вроде все хвалят, а дальше то куда двигаться?
п.с. просьба отвечать по теме(итак каша в голове). спасибо.
!{ra!{e/\/
23.03.2008, 18:53
запарился я((. придется спросить.
есть visual c++, borland c++. с чего начать то? там большая разница? .
это просто компиляторы разницы в них особо нет тобишь обе с# просто разные компоненты....
скачивал книги, а там с++ такой, с++ сякой. с чего начать то?
решил начать с с++ за 21 день. вроде все хвалят, а дальше то куда двигаться?
Тупо читая книжки трудно выучить язык..лучше берись за какие нибудь задачи и в процессе решения ты выучишь язык .....так продуктивнее
да надо вспомнить все. если паскаль примерно помню мож на уровне 1 курса инст., то с++ СОВСЕМ забыл((
это просто компиляторы разницы в них особо нет тобишь обе с# просто разные компоненты....
еще как несогласен ... и при чём тут c#?
Разница огромная , найдешь на любом кодерском сайте ...
например здесь (http://www.sources.ru/NonCGI/Forum2/HTML/001094.html)
ps: ...для работы твоей по книжке лучше подойдет ms visual C++ или lcc...
#include <iostream>
using namespace std;
typedef unsigned long int ulong;
class X1
{
public:
int func1();
int func2();
};
X1 S;
X1::func1()
{
if (5==5)
{
//blablablabla
}
S.func2();
return 0;
}
X1::func2()
{
if (6==6)
{
//blablablabla
}
return 0;
}
int main()
{
S.func1();
return 0;
}
1>------ Build started: Project: 4, Configuration: Debug Win32 ------
1>Compiling...
1>4.cpp
1>c:\documents and settings\admin\рабочий стол\c++\4\4\4.cpp(16) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\documents and settings\admin\рабочий стол\c++\4\4\4.cpp(26) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>Build log was saved at "file://c:\Documents and Settings\Admin\Рабочий стол\C++\4\4\Debug\BuildLog.htm"
1>4 - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
И он заебал уже:( Ругается именно на {
Студия 2008
в 2008 , ах да , там функцию надо 'явным образом' определить:
#include "stdafx.h"
#include <iostream>
//using namespace std;
typedef unsigned long int ulong;
class X1
{
public:
int func1();
int func2();
};
X1 S;
int X1::func1()
{
if (5==5)
{
//blablablabla
}
S.func2();
return 0;
}
int X1::func2()
{
if (6==6)
{
//blablablabla
}
return 0;
}
int main()
{
S.func1();
return 0;
}
char **TEMP=(char**)malloc(2);
как освободит **TEMP
free( **TEMP);
free(TEMP);
не работает
но free(*TEMP); работает
я всё на шол всем спасибо
De-visible
25.03.2008, 21:57
С чего начать?)
С умения правильно задавать вопрос))
xxxxxxxxxxxxxxx
25.03.2008, 22:28
что такое Функторы? надо срочно -)) зарание спс тем кто знает ответ)
С умения правильно задавать вопрос))
Логичный ответ, но я на самом деле хотел научится программировать, мне сказали что Си - лучший язык для начала язык.. Но что делать, где учить - вот в этом и вопрос :confused:
Логичный ответ, но я на самом деле хотел научится программировать, мне сказали что Си - лучший язык для начала язык.. Но что делать, где учить - вот в этом и вопрос :confused:
Не знаю если он лучший для начала, может стоит пока паскаль учить?
Не знаю если он лучший для начала, может стоит пока паскаль учить?
паскаль :confused: страшное слово) поподробней плиз)
паскаль :confused: страшное слово) поподробней плиз)
http://en.wikipedia.org/wiki/Pascal_programming_language
De-visible
25.03.2008, 23:13
Логичный ответ, но я на самом деле хотел научится программировать, мне сказали что Си - лучший язык для начала язык.. Но что делать, где учить - вот в этом и вопрос
_http://forum.antichat.ru/threadnav63613-1-10-%F7%E5%E3%EE%2B%ED%E0%F7%E0%F2%FC%2B%EF%F0%EE%E3%F 0%E0%EC%EC%E8%F0%EE%E2%E0%F2%FC.html
_http://forum.antichat.ru/thread39750.html
Не раз обсуждалось...
Почитай полезно будет:)
-====================
что такое Функторы? надо срочно -)) зарание спс тем кто знает ответ)
Функторы
Функторами называют объекты, синтаксически подобные функциям, т.е. поддерживающие операцию вызова. Для определения функтора нужно перегрузить оператор () с помощью метода __call__. В Python функторы полностью аналогичны функциям, за исключения специальных атрибутов (func_code и некоторых других). Например, функторы можно передавать в качестве функций обратного вызова (callback) в С-код. Функторы позволяют заменить некоторые приёмы, связанные с использованием замыкания, статических переменных и т.п.
Сопряжённые функторы в математике и в частности в теорий категорий — это пара функторов, состоящих в определённом соотношении между собой. Сопряжённые функторы часто встречаются в разных областях математики.
Неформально функторы F и G сопряжены, если они удовлетворяют соотношению Hom(F(X), Y) = Hom(X, G(Y)).
--------------------------------------------------
А вообще смотри тут _http://ru.wikipedia.org/wiki/Сопряжённые_функторы
(не реклама)
что за баг error C2466: cannot allocate an array of constant size 0 stat.inl в vs2005
что за баг error C2466: cannot allocate an array of constant size 0 stat.inl в vs2005
как обьявлял масив?
массив не создавался
просто использовал директиву
#ifndef _USE_32BIT_TIME_T
#define _USE_32BIT_TIME_T
#endif
по дефаулту компилит 64 бит а мне надо использоваь 32битные структуры
массив не создавался
просто использовал директиву
по дефаулту компилит 64 бит а мне надо использоваь 32битные структуры
Компилим PHP MapScript?
в с++ MFC пишу прогу а не Script
Я о другом вообше спросил =\
А если так то не знаю .
Доброго дня,
WinAPI:
как можно, при помощи функции TextOut вывести значение переменной типа int? Различные пробы выводят ошибки типа "cannot convert parameter 4 from 'wchar_t' to 'LPCWSTR'"...
Благодарю за время, потраченное на мою проблему...
есть очень удобная функция printf
ForNeVeR
30.03.2008, 19:56
Meanor, я бы попробовал записать в качестве аргумента функции что-то типа L"" + i, где i - целая переменная.
Помогите плз написать консольную программу на С, которая выводит например "Йа, Креведко"
Meanor, я бы попробовал записать в качестве аргумента функции что-то типа L"" + i, где i - целая переменная.
мдее... что делает по твоему L?
De-visible
30.03.2008, 20:26
Помогите плз написать консольную программу на С, которая выводит например "Йа, Креведко"
:D :D :D :D :D :D :D :D +1
Function Printf:)
ForNeVeR
30.03.2008, 20:36
L по-моему подключает лингвистов к работе программы. А лингвисты умеют конвертить виндовс-кодировку в юникод :)
De-visible
30.03.2008, 20:46
Помогите плз написать консольную программу на С, которая выводит например "Йа, Креведко"
на C#
using System;
class MainApp
{
public static void Main()
{
Console.WriteLine("Йа креведко! :D :D :D ");
}
}
_http://www.asteam.ru/forum/showthread.php?t=495&goto=nextoldest
Воть :D :D :D :D :D :D :D
на C#
using System;
class MainApp
{
public static void Main()
{
Console.WriteLine("Йа креведко! :D :D :D ");
}
}
_http://www.asteam.ru/forum/showthread.php?t=495&goto=nextoldest
Воть :D :D :D :D :D :D :D
мну на С нужно :(
L по-моему подключает лингвистов к работе программы. А лингвисты умеют конвертить виндовс-кодировку в юникод :)
если делать как ты говоришь, мы получим wchar_t, а челу нужно указатель к Unicode строки.
ForNeVeR
30.03.2008, 21:13
Да, виноват, перепутал. Покурил MSDN, нужно юзить _T("" + i).
Нужный тебе код (взял одну из реализаций русских букв в консоли, если не нравится, не бейте ;) ):
#include "stdafx.h"
#include <iostream>
#include <conio.h>
int _tmain()
{
std::locale rus("rus_rus.866");
std::wcout.imbue(rus);
std::wcout << L"Йа криведко!";
getch();
}
Если русские буквы не нужны, то пройди по ссылке De-Visible, там всё есть :)
De-visible
30.03.2008, 21:13
мну на С нужно :(
А ты по ссылке пройди:)
Meanor, я бы попробовал записать в качестве аргумента функции что-то типа L"" + i, где i - целая переменная.
Покурил printf() на манер echo в пхп, естественно, ничего не вышло...
Потом решил покурить TextOut методом
TextOut(hdc, 250, 40, L"ddr"+speed, sizeof(speed)+3);
Обрадовался, что хотя бы скомпилировалась, но, естественно, на экран вывелся лишь белый фон на том месте, где должны были быть буквы/цифры.
ПС. _UNICODE = _T = L"" но работает почему-то только L"" :(
Благодарю если кто-нибудь покажет мне что я не правильно вкурил =/
De-visible
30.03.2008, 22:51
Курить много вредно!:)
_http://www.progz.ru/forum/lofiversion/index.php/t2652.html
_http://www.frolov-lib.ru/programming/articles/unicode/index.html
Мож здесь что есть?
Курить много вредно!:)
_http://www.progz.ru/forum/lofiversion/index.php/t2652.html
_http://www.frolov-lib.ru/programming/articles/unicode/index.html
Мож здесь что есть?
Спасибо, но проблема не в уникоде, проблема в том, что я не мог понять, как вывести численное значение переменной speed на экран при помощи функции TextOut и ей подобных...
Нашел решение:
_itow(speed, &speedstr, 10);
TextOut(hdc,250, 40, &speedstr, 4);
Но пишет ворнинг, что функция _itow небезопасна...
/* Также интересует, как можно достать кол-во сиволов speedstr, стандартная функция strlen говорит, что не может конвертировать из wchar_t в const char[]... */
Решено методом sizeof(speed).
Благодарю всех за помощь, вопрос закрыт :)
Глупый вопрос наверно возможно ли на C# написать криптор? И хорошо ли он работает с соскетами? C# всмысле
И хорошо ли он работает с соскетами? C# всмыслеWinsock , он и в Африке winsock (https://forum.antichat.ru/thread59975.html) , а вот .NET примочки ( System.Net.Sockets (http://www.java2s.com/Tutorial/CSharp/0580__Network/Catalog0580__Network.htm) ) очень даже удобны ... имхо
Winsock , он и в Африке winsock (https://forum.antichat.ru/thread59975.html) , а вот .NET примочки ( System.Net.Sockets (http://www.java2s.com/Tutorial/CSharp/0580__Network/Catalog0580__Network.htm) ) очень даже удобны ... имхо
Долой .NET!!! API - в зубы, и ВПЕРЁД!!! :)
Долой .NET!!! API - в зубы, и ВПЕРЁД!!! :)
прочти вопрос...
ответ не по теме хуже чем молчание...
Долой .net!!! Api - в зубы, и ВПЕРЁД!!!
если в ЯП существует удобный интерфейс использования чего то то юзать вместо этого АПИ исхо грех
нужна помощь
объясняю
есть исходники A1 и B2
A1 содержит код для загрузки K файлов N версии
B2 содержит код для загрузки K файлов P версии
код разных версий сильно различаются,
необходимо создать файл C3 поддерживающий K файлы N и P версий
вопрос может кто-нибудь поможет объединить 2 файла в один ?
подробности в личке
нужна помощь
объясняю
есть исходники A1 и B2
A1 содержит код для загрузки K файлов N версии
B2 содержит код для загрузки K файлов P версии
код разных версий сильно различаются,
необходимо создать файл C3 поддерживающий K файлы N и P версий
вопрос может кто-нибудь поможет объединить 2 файла в один ?
подробности в личке
Всё что я смог понять из этого, то что наверно тебе нужен #include
Всё что я смог понять из этого, то что наверно тебе нужен #include
если бы :mad:
короче надо сравнить код в двух файлах и написать чем они различаются
п.с. я просто не хочу выкладывать сюда код
Не подскажите с чего начать изучение С++ ? Есть Visual Studio 2005 - но что то нагромаждено много лишнего мне кажется... Точнее лишнего для начального этапа...
Что посоветуете?
De-visible
02.04.2008, 00:11
Visual C++ 6.0 - лучше всего запастись им:)
И побольше книжек!По C++!
точне книжке тебе надо будет только 2.
Брюс Эккель - Философия C++. Введение в стандартный C++
Скачать (http://slil.ru/22965957)
Эккель Б., Эллисон Ч. - Философия C++. Практическое программирование
Скачать (http://slil.ru/22965959)
И еще читай лучше иностранных авторов, а то у меня сложилась мнение что наши штампуют не на качество а на количество...
угу ... спасибо... книжки то есть....
а вот со средой проблемы..не знаю какая проще и удобнее..
Значит Visual C++ 6?
под виндой да. visual studio имхо лучшее решение.
но почему именно 6? иожет лучше последнюю версию (2008 если правильно помню)?
echobyte
03.04.2008, 00:13
попугай
изучай С++ и о Visual C++ пока не думай. имхо сразу учить VC++ всеровно что пойти в школу сразу в старший класс.
Не подскажите с чего начать изучение С++ ? Есть Visual Studio 2005 - но что то нагромаждено много лишнего мне кажется... Точнее лишнего для начального этапа...
ничего лишнего:
http://kent.dl.sourceforge.net/sourceforge/dev-cpp/devcpp-4.9.9.2_setup.exe (9 Мб)
дайте плиз сцылку или залейте куда-нить хороший справочник по функциям С++ наподобие этого http://www.codenet.ru/progr/cpp/spr/
з.ы. ничего толкового немогу найти, и в куче учебников нету хорошего, более-менее полного справочника без излишеств..
угу ... спасибо... книжки то есть....
а вот со средой проблемы..не знаю какая проще и удобнее..
Значит Visual C++ 6?
Сначало, надо хорошо синтаксис выучить и работать в простой среде , например lcc. После этого, можно постепенно переходить на Visual C++, т.к. для новичка, сразу VC++, это будет трудновато.
ничего лишнего:
http://kent.dl.sourceforge.net/sour...9.9.2_setup.exe (9 Мб)
Спасибо, прикольная фича
как реализовать системные команды на с/с++ ?
хороший справочник по функциям С++
лучше MSDN, я думаю, не найти:
http://msdn2.microsoft.com/
всмысле системные ?
консольные ?
всмысле системные ?
консольные ?
net send
echobyte
04.04.2008, 01:34
лучше MSDN, я думаю, не найти:
http://msdn2.microsoft.com/
он на енглише =/ енглишь знаю очень неплохо, но не до того чтоб курить маны.. да и ненужна мне такая махина..
В гугл введи system, popen c++ и будет тебе нет сенд.
Функция system обеспечивает легкий способ выполнения вашей программой команды операционной системы, такой как "DIR", или другой программы:
#include
void main(void)
{
system("DIR");
}
В этом случае программа использует функцию system для вызова команды MS-DOS DIR.
http://allk.ru/book/10/68.html
net send Ну просто взять и написать. msdn.microsoft.com - там ищешь по описанию требуемых функций нужные тебе апи. И пишешь.
а под виндой нельзя функции exec()? можно было бы и с ее помощю реализовать то что ты хочешь
а под виндой нельзя функции exec()? можно было бы и с ее помощю реализовать то что ты хочешь
Можно, почему бы и нет. Только system проще
он на енглише =/ енглишь знаю очень неплохо, но не до того чтоб курить маны.. да и ненужна мне такая махина..
махина... это да... но зато всё есть
Forcer +1 полность поддерживаю ИМХО в качестве справочника лучше чем MSDN нету
енглишь знаю очень неплохо этого достаточно чтобы понять о чём идёт речь
// TestVolume.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "iostream.h"
void main()
{
char NameBuffer[MAX_PATH];
char SysNameBuffer[MAX_PATH];
DWORD VSNumber;
DWORD MCLength;
DWORD FileSF;
if (GetVolumeInformation("C:\\", NameBuffer, sizeof(NameBuffer),
&VSNumber, &MSLength, &FileSF, SySNameBuffer, sizeof(SysNameBuffer));
{
cout << NameBuffer << endl;
coun << SysNameBuffer << endl;
coun << SVNumber << endl;
}
}
при компиляции вылетает ошибка, компилирую в Microsoft Visual Studio 2008:
Error 1 fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory c:\documents and settings\admin\my documents\visual studio 2008\projects\testvolume\testvolume\testvolume.cpp 6 TestVolume
Подскажите где взять этот модуль?
ForNeVeR
06.04.2008, 16:34
#include "iostream.h" замени на #include <iostream.h> . Подобные стандартные хедеры пишутся в угловых скобках, а не кавычках.
#include "iostream.h" замени на #include <iostream.h> . Подобные стандартные хедеры пишутся в угловых скобках, а не кавычках.
Тоже самое =\
1) кавычки
2) добавь using namespace std;
3) не coun, а cout
4) не прально написана SysNameBuffer в GetVolumeInformation
5) не прально MCLength в GetVolumeInformation
5) ошибки в скобках
7) кароче исправил, вот что получилось:
#include <windows.h>
#include <iostream>
using namespace std;
void main()
{
char NameBuffer[MAX_PATH];
char SysNameBuffer[MAX_PATH];
DWORD VSNumber;
DWORD MCLength;
DWORD FileSF;
TCHAR root[]="C:\\";
BOOL info = GetVolumeInformation(root, NameBuffer, sizeof(NameBuffer), &VSNumber, &MCLength, &FileSF, SysNameBuffer, sizeof(SysNameBuffer));
if (info)
{
cout << NameBuffer << endl;
cout << SysNameBuffer << endl;
cout << VSNumber << endl;
}
}
В настройках проекта, поставь Use Multi-Byte Character Set, вместо unicode
Народ, вобщем есть немного одна проблемка. тут минипрога которая должна считать колличество символов и при желании пользователя повторять эту процедуру. Она работает только 1 раз, все остальные она проскакивает, не давая ввести слова, автоматически ставля 0 и переходит к вопросу о выборе действия - повторить или выйти. Помогите плз решить эту задачку - я уже много вариантов пробовал - не выходит(
#include<iostream>
using namespace std;
int main()
{
int again;
begin:
char szInput[256];
puts ("\n\n\n\nEnter a sentence: ");
gets(szInput);
printf("\n\n\t\tThe sentence entered is %u characters long)\n",strlen(szInput));
puts("\n\n\t\t\t*** Third task completed ***");
printf("\n\n\nagain? 1 - yes\n");
cin >> again;
if(again == 1)
{
goto begin;}
return 0;
}
hackconnect
07.04.2008, 09:47
не юзайте вы goto! забудьте об этом как о страшном сне 90х годов!
Вынеси свой код в функцию и вызывай while(myfunction())
захочешь выйти напишешь в функции по ифу return false;
echobyte
07.04.2008, 15:01
#include<iostream>
using namespace std;
int again;
char szInput[256];
int main()
{
for(;;)
{
puts ("\n\n\n\nEnter a sentence: ");
cin>>szInput;
printf("\n\n\t\tThe sentence entered is %u characters long)\n",strlen(szInput));
puts("\n\n\t\t\t*** Third task completed ***");
printf("\n\n\nagain? 1 - yes\n");
cin >> again;
if(again!=1)
break;
}
return 0;
}
есть ли в С++ функция которая находит из char массива сходный текст и возвращает его индекс?
не юзайте вы goto! забудьте об этом как о страшном сне 90х годов!
Вынеси свой код в функцию и вызывай while(myfunction())
захочешь выйти напишешь в функции по ифу return false;
Может я немного не понимаю, но у меня всерано не выходит. Перенес код в отдельную ф-ю, вызывал ее через мейн так как ты говорил, через иф поставил ретурн фалсе. Не выходит чтото у меня ( Много вариантов перепробовал - все тоже самое( Помогите плз, ну не могу въехать...
Может я немного не понимаю, но у меня всерано не выходит. Перенес код в отдельную ф-ю, вызывал ее через мейн так как ты говорил, через иф поставил ретурн фалсе. Не выходит чтото у меня ( Много вариантов перепробовал - все тоже самое( Помогите плз, ну не могу въехать...
Чем не устраивает код что дал echobyte?
KindEcstasy
07.04.2008, 22:04
>есть ли в С++ функция которая находит из char массива сходный текст и возвращает его индекс?
Да. bsearch(), заглавник stdlib.h возвращает указатель на элемент массива
KindEcstasy
07.04.2008, 22:06
horlyk
Значит условие ложное раз не выходит ;)
2 horlyk: А чем тебя не устраивает вышеописанный вариант вариант?
#include <iostream.h>
using namespace std;
int again;
char szInput[256];
int main()
{
for(;;)
{
puts ("\n\n\n\nEnter a sentence: ");
cin>>szInput;
printf("\n\n\t\tThe sentence entered is %u characters long)\n",strlen(szInput));
puts("\n\n\t\t\t*** Third task completed ***");
printf("\n\n\nagain? 1 - yes\n");
cin >> again;
if(again!=1)
break;
}
return 0;
}
Только надо добавить:
#include <string.h>
#include <stdio.h>
Ну или хочешь то можно и так:
#include <iostream.h>
#include <string.h>
#include <stdio.h>
int myfunc();
int again=1;
char szInput[256];
int main()
{
while (again==1)
{
myfunc();
}
return 0;
}
int myfunc()
{
puts ("\n\n\n\nEnter a sentence: ");
cin>>szInput;
printf("\n\n\t\tThe sentence entered is %u characters long\n",strlen(szInput));
puts("\n\n\t\t\t*** Third task completed ***");
printf("\n\n\nagain? 1 - yes\n");
cin >> again;
if(again!=1)
{
return false;
}
return 0;
}
когда я запускаю прогу на выполнение с тем кодом - после введения символов, когда спрашивает о том что сделать - 1 - заново, так там сразу программа завершает работу, типа прес ени кей. Мне же нужно чтоб по вводу еденички программа заново начинала выполняться, тоесть новое выполнение ф-и ввода и подсчета символов, а оно не выходит(
echobyte
08.04.2008, 01:37
когда я запускаю прогу на выполнение с тем кодом - после введения символов, когда спрашивает о том что сделать - 1 - заново, так там сразу программа завершает работу, типа прес ени кей. Мне же нужно чтоб по вводу еденички программа заново начинала выполняться, тоесть новое выполнение ф-и ввода и подсчета символов, а оно не выходит(
хм.. это в вижуал студио добавляеться system("PAUSE"); для того чтоб консолька не закрывалась после выполнения.. там вроде в настройках среды есть опция это отрубить. верхний код я компилил в Dev-Cpp (имхо лучшая среда для console c/c++ http://kent.dl.sourceforge.net/sourceforge/dev-cpp/devcpp-4.9.9.2_setup.exe), бинарник вот http://dump.ru/files/p/p063342791/
puts ("\n\n\n\nEnter a sentence: ");
cin>>szInput;
printf("\n\n\t\tThe sentence entered is %u characters long\n",strlen(szInput));
if(again!=1)
{
return false;
}
return 0;
убило...
Мне же нужно чтоб по вводу еденички программа заново начинала выполняться
так и происходит
так и происходит
По идее должно происходить, а ты запусти на выполнение этот код и пройдись хоть 2 раза по самой проге с вводом единички - очень удивишься. Ну боян - бояном, почему в первый раз оно работает нормально, а во второй, когда вводишь 1 оно просто "пропускает" ввод символов, автоматически ставля 0 в количестве символов и задавая вопрос о том что нужно делать - выйти или не выйти? ппц, такой боян происходит с puts, а с cin работает нормально, но не так как этого хочется(если одно слово вводишь - нормально, а если 2 или более там уже дурдом творится а также если символ какойто, да и к тому же пробелы не считает). Меня puts устраивает, но почему оно пропускает его после повтора?
Кто поможет, тому сразу +10)
Вот мой код после миллиона вариантов:
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
int i = 1;
int kol;
int main()
{
char ws[256];
char wwod[] = "введите слово, предложение или еще чтото";
char res[] = "то что вы ввели содержит такое колличество символов: ";
char quit[] = "если вы хотите выйти - введите любое число, а если повторить - введите 1";
CharToOem(wwod,wwod);
CharToOem(res,res);
CharToOem(quit,quit);
while (i==1) {
puts(wwod);
gets (ws);
kol = strlen(ws);
cout << res << kol << endl;
puts(quit);
cin >> i;
if(i != 1)
{
exit(1);
};
}
return 0;
}
господа, вопрос может быть не совсем по тематике топика, но всё же не подскажете где скачать DDK для WinNT 4.0?
De-visible
08.04.2008, 23:59
_http://www.microsoft.com/whdc/devtools/ddk/default.mspx
_http://www.microsoft.com/whdc/devtools/ddk/default.mspx
там я уже был, и насколько понял, там только для win2003. если ошибаюсь, плиз более конкретный линк.
это, про меня не забудьте) мой топик выше)
Кстати, эхобайт, пасиб за прогу, я качнул, глянул - вроде интуитивный интерфейс) буду там для консоли писать)
reversys
09.04.2008, 00:31
2horlyk
#include <iostream>
using namespace std;
int main()
{
int again=1;
char buff[512];
char b;
for(;;)
{
cin.getline(buff,512);
cout<<strlen(buff)<<endl;
cin>>again;
scanf("%c",&b);
if(again!=1)
break;
}
return 0;
}
Например так.
Например так.
Пробовал ввести более 2-х слов?) получается баг) Попробуй) у меня уже такой вариант был) с puts работает без бага но с тем глюком про который я писал выше - при повторном выполнении оно просто пропускает ввод символов, автоматически ставля 0, и сразу спрашивая что делать. С сиинами выходит, но только с багом, как в твоем примере. Ппц, уже 2-й день ломаю голову над этим приколом
у меня пример reversys работает с несколькими словами. Еще вариант : cin.clear()
reversys
09.04.2008, 02:47
horlyk я пробовал и более двух и более трёх тоже.
ForNeVeR
09.04.2008, 06:07
horlyk, может, дело в вашем компиляторе? У меня в VS 2008 всё работает с 2-3 словами с несколькими проходами нормально.
как на вс2005 в MFC аппликэшене сделать чтобы у CListBox`а появилась нижний ScrollBar. Поставил опцию Horizontal Scroll но полоса не работает. помогите pls. :( :confused:
Попробуй функцию SetHorizontalExtent (int Extent)
где Extent размер в ПИКСЕЛЯХ ширины полосы прокрутки
ICQ Hool
10.04.2008, 20:49
нужен код для отправки файла(одного) на фтп
буду очень благодарен ;)
ICQ Hool на каком языке ?
на с/с++ WININET за инфой в MSDN
xXvladXx
11.04.2008, 22:11
какой компилятор юзать для написание зверей?
висуаль с++ не покатит он пашет тока на тачках с висуаль студио
боланд вроде делает большой размер выходного файла
да и после делфи опять на борланд не оч хочется...
reversys
11.04.2008, 23:50
висуаль с++ не покатит он пашет тока на тачках с висуаль студио
всё работает и без вижал студио. смотри настройки проэкта и что в своём проэкте используешь.
xXvladXx
12.04.2008, 01:33
всё работает и без вижал студио. смотри настройки проэкта и что в своём проэкте используешь.
хм а что уберать надо?
reversys
12.04.2008, 02:28
Просто когда начинаешь писать - подумай что собираешься использовать.
Например MFC - совершенно ни к чему в программе которая должна незаметно поработать на компьютере жертвы. Мало того что для запуска будут нужны dll которые на сколько я помню входят в состав винды только начная с xp sp2, так ещё и размер будет не супер.
echobyte
12.04.2008, 13:32
хм а что уберать надо?
выбирать win32 application
Ворпрос по CryptoAPI:
Хочу сгенерировать хэш (криптопровайдер не важен). Смотрю МСДН, тырю оттуда пример, который оказывается слегка бажным. В общем довести его до ума мне так и не удалось. Кусок:
CryptAcquireContext(&hProv, NULL, MS_STRONG_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET);
CryptGetUserKey(hProv, AT_SIGNATURE, &hKey);
Вторая функция возвращает ошибку NTE_NO_KEY - The key requested by the dwKeySpec parameter does not exist. Т.е. типа не разрешает мне использовать параметр AT_SIGNATURE. Кто-нибудь сталкивался?
Господа, подскажите, пожалуйста, возможно ли .avi файл скомпилить вместе с .exe, чтобы не ложить его вместе с проектом в папку? Может существуют какие-нибудь компоненты для этого?
reversys
19.04.2008, 03:33
Добавление в ресурсы проекта не подходит?
Добавление в ресурсы проекта не подходит?
Проблема в том, что при компиляции с этим файлом или без размер .exe файла не изменятся. Как я понимаю, что-то там не так)
Товарищи, как программно завершить инет-коннект? Нужно, чтобы при коннекте к определенному серверу, юзер получал "Error 404: Not Found".
З.Ы. Сниффер уже готов для этого :)
ICQ Hool
19.04.2008, 13:25
ребята, выручайте есть исходник программы для отправки почты - http://webfile.ru/1884941
пожалуйста помогите добавить авторизацию, компилятора нету под рукой...
или если есть то какие есть сервера без авторизации?
или если есть то какие есть сервера без авторизации?
Попробуй
mail.np.by
mail.bluebottle.com
smtp.mtu-net.ru
ICQ Hool
19.04.2008, 13:47
Попробуй
mail.np.by
mail.bluebottle.com
smtp.mtu-net.ru
не прокатило, там нужна авторизация ((
не прокатило, там нужна авторизация ((
На мту точно не нужна авторизация, только что проверял, программу лучше свою проверь, может она вообще не отправляет
Алгоритмы обхода фаерволлов win/nt на общей основе, хотелось бы узнать где можно достать мб ссылки укажете очень надо, еще нужны нестандартные непалящиеся методы обхода на c/asm тоже линки киньте пожалуйста
Товарищи, как программно завершить инет-коннект? Нужно, чтобы при коннекте к определенному серверу, юзер получал "Error 404: Not Found", ну или ниче не получал.
Вобщем, нужно закрыть доступ к определенному сайту.
З.Ы. Сниффер уже готов для этого :)
Delimiter
20.04.2008, 00:11
а может.... тебя RST-киллер устроит??? Тогда в архивах xakep.ru или сам сделай формирование TCP пакета с RST флагом !
Delimiter, спасибо за подсказку. Будем копать :)
ForNeVeR
20.04.2008, 09:25
А вариант с изменением hosts-файла не подходит?
Не, принцип работы немного схож с фаером. Я указываю ИП(или несколько ИПов) и прога должна блокировать/прерывать соединение.
В БСД есть tcpdrop...нужно примерно такое написать :)
помогите разобраться почему этот код работает не так как надо....
#include<iostream>
using namespace std;
int main(int argc, char *argv[])
{
char **message_buf;
message_buf = new char*[argc];
for(int u=0;argv[u] != NULL;u++)message_buf[u]=new char[sizeof(argv[u])];
for(int i=0; argv[i] != NULL; i++)
{
strncpy(message_buf[i], argv[i], sizeof(argv[i]));
cout<<"w["<<i<<"]:"<<message_buf[i]<<endl;
}
for(int i=0;argv[i] != NULL;i++)delete [] message_buf[i];
delete []message_buf;
}
кампилю g++(linux)
Запускаю: ./client sdgdfg dfg dfg df gdfg
результат
w[0]:./cl
w[1]:sdgd
w[2]:dfg
w[3]:dfg
w[4]:df
w[5]:gdfg
как видете выводит только первые 4 символа... не предлогать переписать код, важно найти ошибку именно в этом.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot