Форум программистов, компьютерный форум CyberForum.ru

Ошибка сегментирования при компиляции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как достать кириллические символы из char* http://www.cyberforum.ru/cpp/thread1616751.html
Добрый день. Использую библиотеку, которая возвращает строку в char*. Если создавать std::wstring из этой строки, то кириллица отображается как знаки вопросов. Помогите достать из буфера char* русские символы. Заранее спасибо.
C++ Не могу заставить g++ не инициализировать локальную переменную нулем Привет! Есть такой код (из серии "что будет напечатано на экран") #include <iostream> using namespace std; int x = 1; namespace A { int x = 2; http://www.cyberforum.ru/cpp/thread1616331.html
AllocHook C++
Помнится в какой-то теме были задачи одного из собеседований озвучены. Из-за давности той темы отдельно создал новую. Заинтересовала меня тогда одна задача. Определить сколько памяти израсходовал map при выделении 1000000 разных записей. Вот я нашел решение, которое годится для общего случая со своими allocator например. #include <crtdbg.h> #pragma push_macro("_DEBUG") #undef _DEBUG...
Запуск проекта в clion C++
Всем привет! У меня такая проблема: не могу запустить проект в clio, когда я запускаю проект вылетает окно edit configuration, а я вообще незнаю что туда писать( Помогите пожалуйста! Заранее спасибо)
C++ Как запустить стороннюю программу с атрибутами? http://www.cyberforum.ru/cpp/thread1613279.html
Ребята спасайте, вот получается есть такой код в батнике: plink.exe -ssh 209.249.30.190 -C -N -l adm -pw adm -D 8081 -v Как я понимаю, мы открываем файл plink.exe с нужными нам атрибутами. Как точно так же передать эти атрибуты, только через сишку. Что бы например мы могли передавать атрибуты так: plink.exe -ssh edit1.text -C -N -l edit2.text -pw edit3.text -D 8081 -v
C++ Обмен данными через параллельный порт Нужен код программы, которая будет обмениваться данными с устройством, подключенное через параллельный порт Добавлено через 14 часов 41 минуту В частности обмен данными с флешкой или принтером подробнее

Показать сообщение отдельно
Diman_
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 58

Ошибка сегментирования при компиляции - C++

18.12.2015, 00:29. Просмотров 266. Ответов 2
Метки (Все метки)

Когда компилирую через g++ компилируется, при запуске выдает ошибку сегментирования, а при компиляции через NetBeans IDE выдает две ошибки, на скринах показал.
Задача: Разработать две программы – сервер и клиент. Клиент отсылает серверу через
датаграммный сокет два числа L и U, введенные пользователем, где L – это нижняя
граница диапазона, U – верхняя граница диапазона. Сервер принимает значения границ
диапазона из почтового ящика, вычисляет сумму и произведение чисел от L до U и
выводит полученные значения на экран.

Код файла сервер
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
 
int main(int argc, char *argv[])
{
    int sock, listener;
    struct sockaddr_in addr;
    char buf[256];
    int bytes_read;
    
    printf("creating socket...\n");
    listener = socket(AF_INET, SOCK_STREAM, 0);
    if(listener < 0)
    {
        perror("socket error");
        return EXIT_FAILURE;
    }
    int port = atoi(argv[1]);
    addr.sin_family = AF_INET;
    addr.sin_port = htons(port);
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    
    printf("binding socket...\n");
    if (bind(listener, (struct sockaddr *)&addr, sizeof(addr)) < 0)
    {
        perror("bind error");
        return EXIT_FAILURE;
    }
 
    printf("reading data from socket...\n");
    listen(listener, 1);
    while(1)
    {
        sock = accept(listener, NULL, NULL);
        if(sock < 0)
        {
            perror("accept error");
            return EXIT_FAILURE;
        }
 
        while(1)
        {
            bytes_read = recv(sock, buf, 256, 0);
            if (bytes_read <= 0) break;
            //
            int L=1, U=10;
            long double Sum=0, Proizv=1;
            int flag = 0;
            char l[256]="", u[256]="";
            for (int i = 0; i < 256; i++)
            {
                if (buf[i] == '$')
                {
                    flag = i + 1;
                }
                else
                {
                    if (0 == flag)
                    {
                         l[i] = buf[i];
                    }
                    else
                    {
                         u[i - flag] = buf[i];
                    }
                }
            }
            char *error1, *error2;
            L= strtol(l, &error1, 10);
            U= strtol(u, &error2, 10);  
            Sum=0; 
            Proizv=1;
            for (int i=L; i<=U; i++)
            {                   
                    Sum+= i;
                    Proizv*=i;
            }
            printf("\nВы задали диапазон: [%i;%i]. На диапазоне подсчитаны:\nСумма=%0.0Lf; Произведение=%0.0Lf;\n", L, U, Sum, Proizv);
            //
            send(sock, buf, bytes_read, 0);
            close(sock);
        }
    }
    
    return 0;
}
Код файла клиент
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
 
char message[256];
char buf[256];
 
int main(int argc, char *argv[])
{
    int sock;
    struct sockaddr_in addr;
 
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if(sock < 0)
    {
        perror("socket error");
        exit(1);
    }
    int port = atoi(argv[1]);
    addr.sin_family = AF_INET;
    addr.sin_port = htons(port); 
    addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
    if (connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0)
    {
        perror("connect error");
        exit(2);
    }
    char a[127];
    printf("Введите нижнюю границу диапазона:\n");
    scanf("%s", a);
    strcat(message, a);
    printf("Введите верхнюю границу диапазона:\n");
    scanf("%s", a);
    strcat(message, "$");
    strcat(message, a);
    send(sock, message, sizeof(256), 0);
    
    printf(buf);
    close(sock);
 
    return 0;
}
вот еще скрины ошибок
Миниатюры
Ошибка сегментирования при компиляции   Ошибка сегментирования при компиляции   Ошибка сегментирования при компиляции  

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru