Code: #include <iostream> using namespace std; void print_out (int n); int main () { int n; cout << "enter number "; cin >> n; cout << "celye chisla do" << n << endl; print_out (n) ; return 0; } void print_out (int n) { for (int i=0; i<n; cout << ++i << ", ") ; } ...
Объясню, что написл Slip - cout не перегружен для работы с void-типами, и это нормально, это в логике вещей, нельзя вывести то, чего нет. А твоя функция возвращает void тип, который ты и пытаешься вывести. Следовательно, чтобы убрать эту ошибку нужно вызывать твою функцию вне cout;
2.Slip ты моя радость )) а в книжке в похожем примере написано что вот так cout << "celye chisla do" << n << "-" << print_out (n); одной строкой можно. спасибо, ты сделал мне мультиоргазм) 2 groundhog отлично объяснил. спасибо
а в книжке в похожем примере написано что вот так cout << "celye chisla do" << n << "-" << print_out (n); Можно, если ф-я возвращает какое либо значение (groundhog же написал): Code: #include <iostream> using namespace std; int print_out(int n); int main () { int n; cout << "enter number "; cin >> n; cout << endl << print_out(n) << endl; return 0; } int print_out(int n) { return n*10; }
Вообще в С++ ф-я может возвращать только одно значение. Если хочешь что бы ф-я изменяла и "возвращала" множество данных в другой области видимости, то указатели/ссылки тебе в помошь.
Подскажите по этому коду, почему невыводится ип подконектившегося клиента? Code: struct datas { SOCKET ss; SOCKADDR_IN sadr; }; DWORD WINAPI twins(LPVOID lParam) { datas *params=(datas*)lParam; SOCKET s;s=params->ss; char *buf=new char[1024]; for(;;) { recv(s,buf,1024,0); Sleep(500); send(s,buf,strlen(buf),0); if(strcmp(buf,"exit")==0){break;} memset(buf,NULL,strlen(buf)); } delete []buf; } int main() { DWORD id; SOCKET sin,sout;WSADATA wsd; SOCKADDR_IN ladr,cadr; datas params; WSAStartup(MAKEWORD(2,0),&wsd); ladr.sin_family=AF_INET; ladr.sin_port=htons(250); ladr.sin_addr.s_addr=0; sin=socket(AF_INET,SOCK_STREAM,0); bind(sin,(sockaddr*)&ladr,sizeof(ladr)); for(;;) { Sleep(300); listen(sin,10); int sz=sizeof(cadr); sout=accept(sin,(sockaddr*)&cadr,&sz); params.ss=sout; params.sadr=cadr; getpeername(sout,(sockaddr*)&cadr,&sz); printf("\n",inet_ntoa(cadr.sin_addr)); CreateThread(0,0,&twins,(void*)¶ms,0,&id); } //WSACleanup(); }
Блин, ну ты и геморойщик. Слабо было использовать просто функцию, а не запускать программу, использующую эту функцию?
Недавно занялся C++(совсем недавно), и сегодня попытался написать обычную работу с сокетами - открытие порта и его прослушиваение. Подключил winsock2.h, вроде сделал все как нужно, но на вызове функции socket компилятор выдаёт ошибку. А вот сам исходник. Code: #include "stdafx.h" #include "Form1.h" #include "winsock2.h" using namespace test; [STAThreadAttribute] int main(array<System::String ^> ^args) { WSADATA wsaData; SOCKET s; WSAStartup(MAKEWORD(2,2), &wsaData); s = socket(AF_INET,SOCK_STREAM,0); // Enabling Windows XP visual effects before any controls are created Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); // Create the main window and run it Application::Run(gcnew Form1()); return 0; } Помогите пожалуйста разобраться.
Итак попытка номер пять ). Патчему вывод из смд не перенаправляется? Паапки! Куку ) #include "stdafx.h" #include "windows.h" #include <iostream> #include <windows.h> #include <stdio.h> #include <conio.h> #include <string.h> #pragma hdrstop int main() { STARTUPINFOA si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); ZeroMemory( &pi, sizeof(pi) ); SECURITY_ATTRIBUTES secat; secat.nLength = sizeof(SECURITY_ATTRIBUTES); secat.bInheritHandle = TRUE; secat.lpSecurityDescriptor = NULL; HANDLE read_stdout,newstdout; CreatePipe(&read_stdout,&newstdout,&secat,0) si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; si.wShowWindow = SW_HIDE; si.hStdOutput=newstdout; //si.cb; GetStartupInfoA(&si); CreateProcessA("C:\\WINDOWS\\system32\\cmd.exe", " /k dir", NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi); DWORD bytes; //кол-во прочитанных байт DWORD avail; //кол-во доступных байт char buf[1023]; PeekNamedPipe(read_stdout, buf, 1023, &bytes, &avail, NULL); ReadFile(read_stdout, buf, 1023, &avail, NULL); std::cout << buf; std::cin.get(); }
Объясниет на пальцах как в 6м Борланд Билдере определять количесво памяти и делать консольные приложения не привязаные к либам на данном кампутере? С синтаксисом я там буду сам уже ковырять, пока самое начало.
Как конвертировать массив char в тип String? массив могу создавать или так char buf[1024]; или так char *buf = new char[1024];
Если не ошибаюсь то все очень просто. Code: char buf[1024]; или так char *buf = new char[1024]; string test = buf;