[ 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. KNOT

    KNOT Member

    Joined:
    7 Apr 2010
    Messages:
    107
    Likes Received:
    26
    Reputations:
    3
    выдает ряд ошибок
    PHP:
    #include <iostream> 
    sing namespace std;  
    int main()  
    {  
    int n;  
    float s=0
    const 
    int n=20
    float a[n];  
    for (
    int i=0i<ni++)    
    {         
    cout<<"\n vvedite "<<i<<" chislo  ";    
    cin>>a[i];     
    }  
    for (
    i=0i<ni++)    
    if (
    2==0s=s+a[i]; 
    cout<<"\n s="<<s;  
    }
    показывает ошибку в 7,5 и 14.
     
  2. inCode

    inCode Member

    Joined:
    20 Jun 2011
    Messages:
    141
    Likes Received:
    22
    Reputations:
    5
    Code:
    #include <iostream>
    
    using namespace std;
    
    int main()
    {	 
    	float s=0; 
    	const int n=20; 
    	int a[n];  
    	for (int i=0; i<n; i++)    
    	{         
    	cout<<"\n vvedite "<<i<<" chislo  ";    
    	cin>>a[i];     
    	}  
    	for (int i=0; i<n; i++)    
    	if (i % 2==0) s=s+a[i]; 
    	cout<<"\n s="<<s;  
    	return 0;
    }
     
  3. marginal

    marginal New Member

    Joined:
    23 Jul 2008
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте. Пытаюсь написать самую первую программу по книге Джесса Либерти, Hello World, но не получается. Все делаю по книге. Подскажите в чем ошибка? Привожу пример

    #include <iostream.h>

    int main()
    {
    cout << "Hello World!\n";
    return 0;
    }

    Выдает такую ошибку Compiling...
    Error spawning cl.exe

    san.exe - 1 error(s), 0 warning(s)
     
    #7343 marginal, 3 Jun 2012
    Last edited: 3 Jun 2012
  4. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    С большой вероятностью можно предположить, что VS была установлена с выборочными компонентами, и какой то из них, необходимый, не был установлен.
    Советую переустановить VS и оставить все компоненты по умолчанию. Если ошибка повториться - значит дело в чем то другом.
     
  5. cipa21

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

    Joined:
    9 Apr 2009
    Messages:
    548
    Likes Received:
    146
    Reputations:
    30
    Code:
    #include <iostream>
    using namespace std;
     
  6. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    marginal, пути пропиши в настройках к папке Bin,include и т.д.
     
  7. ХАМнаМИЛЛИОН

    Joined:
    31 Mar 2011
    Messages:
    19
    Likes Received:
    1
    Reputations:
    0
    решено.
     
    #7347 ХАМнаМИЛЛИОН, 7 Jun 2012
    Last edited: 8 Jun 2012
  8. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1

    Ну так переведи Uri в стринг и работай со стринговым форматом. Вообщем конвертируй uri в string-
     
  9. qmen

    qmen New Member

    Joined:
    23 Dec 2010
    Messages:
    63
    Likes Received:
    1
    Reputations:
    0
    У меня вопрос в чём разница с ";" и без него имею ввиду после if и for?
    Заранее благодарен.
     
  10. Xnamed

    Xnamed New Member

    Joined:
    1 Feb 2009
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    После if, for, while не ставиться ; этот знак!
    if for while имеют такой вид
    Code:
    while(true) {
    }
     
  11. qmen

    qmen New Member

    Joined:
    23 Dec 2010
    Messages:
    63
    Likes Received:
    1
    Reputations:
    0
    ok а как сделать чтобы программа как только завершилась не выходила а ждала заданное кол-во времени?
     
  12. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Ты поисковиком вообще не умеешь пользоваться?
    Sleep(время в миллисекунлах);
     
  13. NetAng

    NetAng Member

    Joined:
    29 Dec 2010
    Messages:
    75
    Likes Received:
    12
    Reputations:
    5
    можешь поставить system("pause"); в конце, если тебе нужно увидеть результат.
     
  14. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Подскажите, пожалуйста, как узнать имя текущего пользователя?
     
    #7354 0o Chris o0, 2 Jul 2012
    Last edited: 2 Jul 2012
  15. DeepBlue7

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

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12

    Code:
    #include <iostream>
    #include <Windows.h>
    
    #define BUF_SIZE 256
    int main()
    {
    	char szBuf[BUF_SIZE];
    	DWORD dwSize;
    	dwSize = sizeof(szBuf);
    	GetUserNameA(szBuf,&dwSize);
    	std::cout << szBuf;
    	std::cin.get();
    	return 0;
    }
     
    #7355 DeepBlue7, 3 Jul 2012
    Last edited: 3 Jul 2012
  16. olgnet

    olgnet New Member

    Joined:
    8 Apr 2012
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Сокеты - загрузка содержимого сайта

    Здравствуйте, использую linux(т.е. winAPI не предлогать) и компилятор g++... Хочу с помощью сокетов получить ответ от сервера(nginx), но ответ от сервера приходит только частично, похоже проблема в том что recv не успевает получить ответ... Как можно это исправить? Заранее очень благодарен за помощь! Код:
    Code:
    #include <stdlib.h>
    #include <iostream>
    #include <sys/socket.h>
    #include <sys/types.h>
    #include <netdb.h>
    #include <netinet/in.h>
    #include <assert.h>
    #include <stdio.h>
    #include <sstream>
    using namespace std;
    int main()
    {
        char site[] = "nixmail.ru";
        char message[] = "GET / HTTP/1.1\r\nHost: nixmail.ru\r\n
    User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5\r\n
    Accept: text/html\r\nConnection: close\r\n";
        int sock;
        char buf[2097152];
        struct sockaddr_in addr;
        struct hostent* host = gethostbyname(site);
        sock = socket(AF_INET, SOCK_STREAM, 0);
        if(sock < 0)
        {
            perror("socket");
            exit(1);
        }
        addr.sin_family = AF_INET;
        addr.sin_port = htons(80);
        addr.sin_addr.s_addr = ((in_addr*)host->h_addr_list[0])->s_addr;
        if(connect(sock, (struct sockaddr*)&addr, sizeof(addr)) < 0)
        {
            perror("connect");
            exit(2);
        }
     
        send(sock, message, sizeof(message), 0);
        recv(sock, buf, sizeof(buf), 0);
        cout << buf << endl;
        close(sock);
        return 0;
    }
     
  17. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    olgnet, стремно ты написал:
    Такой большой буфер не нужен. Обычно хватает 4096 или 8192 байт. Но считывать нужно в цикле, например так:
    Code:
    char buf[8193];
    ...
    int x;
    while(x = recv(sock, buf, 8192, 0) > 0) {
        buf[x] = 0;
        cout<<buf;
    }
    
     
  18. olgnet

    olgnet New Member

    Joined:
    8 Apr 2012
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Огромное спасибо, всё работает... Но у меня есть несколько вопросов(недавно начал изучать с++)
    1) Ответ сервера ведь может превышать 8192... Нет ли какого-то универсального решения автоматически подбирающего кол-во элементов массива
    2) Во всех примерах, которые мне попались для строк используется тип char в виде массива, почему не используется string?
    3) В случае с выводом поток в конце используется endl, в вашем примере его нет... Для чего он вообще?)
     
  19. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    1) Нету, так как неизвестно, сколько байт хочет отправить сервер. Нужно принимать данные частями и при необходимости объединять блоки в один поток (массив).
    Но все-таки в HTTP протоколе сервер может сообщить, сколько данных собирается отправить. За это отвечает заголовок Content-Length. (Также при Transfer-Encoding: chunked сервер тоже сообщает, сколько данных еще придет в следующей части.)
    recv возвращает 0, если соединение закрыто и -1, если произошла ошибка. Код ошибки можно узнать вызвав функцию GetLastError().
    2) recv принимает второй параметр - указатель на символьный массив. Если сначала установить размер строки string, то ее также можно будет использовать в recv. Только передавать надо будет в recv не саму переменную типа string, а результат метода c_str() этой пенременной.
    3) В моем примере нету endl, потому что он бы немного изменил результат вывода. endl - это переход на новую строку. Если бы в моем примере он был, то после каждых x принятых байт выводился бы также переход на новую строку. В примере это не критично, но в реальных проектах так делать нельзя.
     
  20. olgnet

    olgnet New Member

    Joined:
    8 Apr 2012
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Ещё раз спасибо! Если можно, поподробнее про принятие данных частями... Не совсем понял как это, нужно в функции recv меняться третий параметр или есть какой-то другой метод, просто если я не буду ограничивать полученные данные то я всё равно могу получить данных больше чем предусматривает элемент массива, который я потом буду склеивать и получать полный ответ
     
Thread Status:
Not open for further replies.