[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    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 << ", ") ;
    }
    ...
     
    #2381 .Slip, 19 Feb 2009
    Last edited: 19 Feb 2009
    1 person likes this.
  2. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Объясню, что написл Slip - cout не перегружен для работы с void-типами, и это нормально, это в логике вещей, нельзя вывести то, чего нет. А твоя функция возвращает void тип, который ты и пытаешься вывести. Следовательно, чтобы убрать эту ошибку нужно вызывать твою функцию вне cout;
     
    1 person likes this.
  3. eiti

    eiti Elder - Старейшина

    Joined:
    8 Jul 2008
    Messages:
    60
    Likes Received:
    3
    Reputations:
    5
    2.Slip ты моя радость ))
    а в книжке в похожем примере написано что вот так
    cout << "celye chisla do" << n << "-" << print_out (n);
    одной строкой можно.
    спасибо, ты сделал мне мультиоргазм)

    2 groundhog отлично объяснил. спасибо
     
  4. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    а в книжке в похожем примере написано что вот так
    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;
    }
     
  5. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    Вообще в С++ ф-я может возвращать только одно значение. Если хочешь что бы ф-я изменяла и "возвращала" множество данных в другой области видимости, то указатели/ссылки тебе в помошь.
     
  6. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Подскажите по этому коду, почему невыводится ип подконектившегося клиента?
    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*)&params,0,&id);
    }
    //WSACleanup();
    }
    
     
  7. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    вопрос такой, как из Си под линукс определить версию ОС? Есть ли какая-то функция?
    компилируется GCC
     
  8. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    ss88, uname()
     
    1 person likes this.
  9. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    спасибо, но на такое ругается
    поступил так system("uname -a >>results.txt")
     
  10. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Блин, ну ты и геморойщик.
    Слабо было использовать просто функцию, а не запускать программу, использующую эту функцию?
     
  11. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    переделал, просто искал, где она определена,
    вобщем, #include <sys/utsname.h>
    Еще раз спасибо ;)
     
    #2391 ss88, 20 Feb 2009
    Last edited: 20 Feb 2009
  12. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Code:
    printf("\n",inet_ntoa(cadr.sin_addr));
    А куда делся спецификатор типа вывода в printf?
     
    1 person likes this.
  13. Kuzya

    Kuzya Elder - Старейшина

    Joined:
    27 Apr 2008
    Messages:
    166
    Likes Received:
    106
    Reputations:
    30
    Недавно занялся 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;
    }
    
    Помогите пожалуйста разобраться.
     
  14. 4y4o

    4y4o Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    40
    Likes Received:
    2
    Reputations:
    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();
    }
     
  15. Unregistered

    Unregistered Member

    Joined:
    15 Jan 2009
    Messages:
    24
    Likes Received:
    10
    Reputations:
    1
    Объясниет на пальцах как в 6м Борланд Билдере определять количесво памяти и делать консольные приложения не привязаные к либам на данном кампутере? С синтаксисом я там буду сам уже ковырять, пока самое начало.
     
  16. Unregistered

    Unregistered Member

    Joined:
    15 Jan 2009
    Messages:
    24
    Likes Received:
    10
    Reputations:
    1
    woohoo! Hello world!
     
  17. Kuzya

    Kuzya Elder - Старейшина

    Joined:
    27 Apr 2008
    Messages:
    166
    Likes Received:
    106
    Reputations:
    30
    Понял ошибку. Не добавил
    #pragma comment( lib, "wsock32.lib" )
     
  18. Kuzya

    Kuzya Elder - Старейшина

    Joined:
    27 Apr 2008
    Messages:
    166
    Likes Received:
    106
    Reputations:
    30
    Как конвертировать массив char в тип String?
    массив могу создавать или так
    char buf[1024];
    или так
    char *buf = new char[1024];
     
  19. rudvil

    rudvil Elder - Старейшина

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    Если не ошибаюсь то все очень просто.
    Code:
    char buf[1024];
    или так
    char *buf = new char[1024];
    
    string test = buf;
    
    
     
  20. .ATK

    .ATK Active Member

    Joined:
    20 Feb 2009
    Messages:
    143
    Likes Received:
    111
    Reputations:
    9
    или так:
     
Thread Status:
Not open for further replies.