0
 typedef char Last_t[MAXL];
 typedef char Rest_t[MAXR];

 typedef struct NodeTag {
 Last_t     Last;
 Rest_t     Rest;
 struct NodeTag *Link;
 }  Node;

typedef struct {
Node *Index[26];
Node *L;
} ContactList;

// parameter to take in a char argument to set it to contact.Last

void INS( Node *cn   ) 
Node contactName;
contactName.Last= cn;
// temp->data=num;
//contactName.Rest=restName;

}

//cant figure out how to pass a char argument

 int main(void)
 {

   INS("David"); 
 }
4

1 回答 1

2

void INS如果您希望您的代码正常工作,应该传递 type 的参数char *,而不是。Nodemain

要将其分配给 member Last,您必须使用strcpy或类似的东西。这是因为您不能将指针分配给数组。更具体地说,您不能将 a 分配char *char[MAXL]

你可以试试这个:

void INS( char * cn   ) {
    Node contactName;
    strncpy (contactName.Last, cn, MAXL);
}

int main(void){
    INS("David");
    return 0;
}

但是,这并不能很好地处理错误。这是一种更安全的方法:

void INS (char * cn){

    Node contactName = {
        .Last[0] = 0,
        .Rest[0] = 0,
        .Link = 0
    };

    if (cn){
        strncpy (contactName.Last, cn, MAXL - 1);
        contactName.Last[MAXL - 1] = 0;
    }
}

int main (void){
    INS ("David");
    return 0;
}
于 2013-09-20T20:52:45.793 回答