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;
//参数接受char参数以将其设置为contact.Last
void INS( Node *cn )
Node contactName;
contactName.Last= cn;
// temp->data=num;
//contactName.Rest=restName;
}
//无法弄清楚如何传递char参数
int main(void)
{
INS("David");
}
答案 0 :(得分:2)
void INS
中的代码能够正常工作,那么 char *
应该传递Node
类型的参数,而不是main
。
要将其分配给成员Last
,您必须使用strcpy
或类似内容。这是因为您无法指定指向数组的指针。更具体地说,您无法将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;
}