代码执行后出现段错误(getenv.c:84错误)

时间:2018-09-30 14:56:58

标签: c fault

我的代码很简单...它只得到两个句子,如networkService(webServer, httpd,TCP, 80, apache)hacl(internet, webServer, TCP, 80)。代码仅从这两个句子中提取每个句子的协议和端口。

因此,对于句子networkService(webServer, httpd,TCP, 80, apache),协议将为TCP,端口为80

对于句子hacl(internet, webServer, TCP, 80),协议应为TCP,端口为80

这就是我所有的代码,执行后出现段错误...这是我的以下代码:

此功能的全部作用是在第一个逗号之后获取协议,并在第三个逗号之后获取端口

void set_port_service(char node_name[], char protocol[], char port[]){

char* sep;
sep = node_name;

int comma_num = 0;
int i = 0; int k =0;

printf("node name: %s\n\n", node_name);

while(comma_num < 4){

    if(*sep == ',')
        comma_num++;

    sep++;

    if(comma_num == 2){

        if(*sep != ',' && *sep != ')'){

            protocol[i] = *sep;
            i++;                
        }           

    }

    if(comma_num == 3){

        if(*sep != ',' && *sep != ')'){

            port[k] = *sep;
            k++;                
        }           

    }

}

protocol[i] = 0; port[k] = 0;

remove_char(protocol); 
remove_char(port);}

下面的所有功能是从上一个功能获取协议和端口并将其添加到vc_node-> port和vc_node-> protocol

void convert_to_dag(graph_node** dag, graph_node** sag){ //directed acyclic graph

struct Graph_Node data = { .next = NULL, .edge = NULL, .hosts = NULL, .predecessor_edge = NULL, .parent_list = NULL};

graph_node* sag_aux = *sag;

while(sag_aux != NULL){ //set vc nodes ports and services

    // service leaf node
    if(strstr(sag_aux->node_name, "networkServiceInfo") || strstr(sag_aux->node_name, "hacl")){  


        //printf("\n\nnode name: %s\n\n", sag_aux->node_name);

        graph_edge* edge_aux = sag_aux->edge;

        printf("Part 1\n\n");

        while(edge_aux != NULL){ 

            char protocol[50]; char port[50];

            memset(protocol, 0, sizeof(protocol)); memset(port, 0, sizeof(port)); 

            set_port_service(sag_aux->node_name, protocol, port); //extract port and protocol from leaf node

            graph_node* vc_node = edge_aux->node; // leaf pointing to vc node

            strcpy(vc_node->protocol, protocol); strcpy(vc_node->port, port); //copy to vc node

            edge_aux = edge_aux->next;

        }

        printf("protocol: %s ", sag_aux->edge->node->protocol); 
        printf("port: %s\n\n",sag_aux->edge->node->port);

        printf("Part 2\n\n"); 

    }

    sag_aux = sag_aux->next;

}

sag_aux = *sag;}

在执行代码后出现段错误。只是没有任何意义...没人知道原因吗?

导致分段错误的代码部分是strstr(sag_aux->node_name, "hacl")语句中的这个if ...

CHECK CODE

0 个答案:

没有答案