2013-03-17 57 views
1

在由'root'指向的'netAddr'下面的代码中打印出来,而不是'指针'指向的'maskAddr'。在此先感谢,只是要求作为最后的手段。 'netAddr'的值会打印出来,但'指针'指向的任何东西都不会。为什么此结构的这个成员不打印出来(C编程)

struct RouteInfo 
{ 
unsigned long netAddr; 
unsigned long gateAddr; 
unsigned long maskAddr; 
char ifName[IF_NAMESIZE]; 
int metric; 
int ttl; 
    struct RouteInfo *next; 
}; 

    struct RouteInfo *root; /* This will be the unchanging first node */ 

    /* This will point to each node as it traverses the list */ 
    struct RouteInfo *pointer; 

    //allocating space for the root 
    root = malloc(sizeof(struct RouteInfo)); 
    root->next = 0; 
    root->netAddr = 19216811; 

    //Point to 1st Item 
    pointer = root; 

    /* Creates a node at the end of the list */ 
    pointer->next = malloc(sizeof(struct RouteInfo)); 
    pointer = pointer->next; 
    pointer->maskAddr = 25525500; 

    pointer->next = malloc(sizeof(struct RouteInfo)); 
    pointer = pointer->next; 
    pointer->gateAddr = 19216810; 

    pointer->next = malloc(sizeof(struct RouteInfo)); 
    pointer = pointer->next; 
    strcpy(pointer->ifName, "eth1"); 

    pointer->next = malloc(sizeof(struct RouteInfo)); 
    pointer = pointer->next; 
    pointer->metric = 16; 

    pointer->next = malloc(sizeof(struct RouteInfo)); 
    pointer = pointer->next; 
    pointer->ttl = 30; 

    //marking the last as NULL 
    pointer->next = 0; 

    //Pointer points to root again 
    pointer = root; 
     printf("%lu%lu \t",root->netAddr, pointer->maskAddr); 

回答

2

其实你不分配给root->maskAddr = ;

后:

root = malloc(sizeof(struct RouteInfo)); 
root->next = 0; 
root->netAddr = 19216811; 

地址:

root->maskAddr = 25525555; 

及其工作:

:~$ ./a.out 
19216811 25525555 

在这里你可以找到你的工作代码:Codepad

+0

谢谢,你有什么想法我可以得到'ifname'打印出来吗? 到目前为止,我已经将它指定为“strcpy(root-> ifName,”dtfdty“);”和“root-> ifName,”dtfdty“;”但是他们没有一个是编译器说他们不兼容的。 – 2013-03-17 17:52:28

+0

@ACScStudent ----是的%s,看到这个[键盘](http://codepad.org/c1yJkwkl) – 2013-03-17 17:54:54

+1

谢谢,我得到它的工作之前,我应该先尝试更多,谢谢你的所有帮助。 – 2013-03-17 17:58:00

2

您从不初始化root->maskAddr

1

由于NPE表示,您从未估价过root->maskAddr。所以也许你是这个意思?

printf("%lu%lu \t",root->netAddr, pointer->next->maskAddr);