だから私はこのリンクされたリストを持っていますが、リストに1つのアイテムを追加した場合にのみ機能します. これが私のコードです:
struct node{
char key[10];
char content[20];
struct node *next;
};
struct node *head=(struct node *) NULL;
struct node *tail=(struct node *) NULL;
struct node * initinode(char *key, char *content)
{
struct node *ptr;
ptr = (struct node *) malloc(sizeof(struct node ) );
if( ptr == NULL )
return (struct node *) NULL;
else {
strcpy( ptr->key, key );
strcpy(ptr->content,content);
return ptr;
}
}
void printnode( struct node *ptr )
{
printf("Key ->%s\n", ptr->key );
printf("Contents ->%d\n", ptr->content );
}
void printlist( struct node *ptr )
{
while( ptr != NULL )
{
printnode( ptr );
ptr = ptr->next;
}
}
void add( struct node *new )
{
if( head == NULL ) {
head = new;
tail=new;
}
else {
tail->next = new;
tail->next=NULL;
}
}
したがって、リストに 3 つの項目を追加して印刷しようとすると、次の 3 つのような最初の項目のみが表示されます。
struct node *ptr;
char *terminal="term";
char *term;
term=getenv("TERM");
ptr=initinode(terminal, term);
add(ptr);
//-----------------------
char ccterm[20];
char *ret, tty[40];
char *currTerminal="tty";
if ((ret = ttyname(STDIN_FILENO)) == NULL)
perror("ttyname() error");
else {
strcpy(tty, ret);
}
ptr=initinode(currTerminal, tty);
add(ptr);
//----------------------------------
char cwd[1024];
char *st="date";
time_t t;
char ti[30];
time(&t);
char date;
date=t;
sprintf(ti,"%s", ctime(&t));
ptr=initinode(st, ti);
add(ptr);
printlist(ptr);
これらのいずれかをリストに追加すると、int 値のみが出力されるため、リスト内の文字列値をどのように出力するのでしょうか。コードを文字列の男性コンテンツに変更しようとしましたが、うまくいきません。アドバイスをいただければ幸いです。