尝试仅使用 C 复制结构中的 C 字符串

trying to copy a c string in a struct using only C

我试图仅使用 C 将硬编码字符串插入到结构中的 char 数组值中,因此我使用了 memcpy,遵循另一个 post 中的示例。但出于某种原因,我不断得到看起来像地址的输出,我不确定为什么。

我的控制台每次都打印出:[ (2,7532592) (1,7524424) ] 和其他类似的长数字。我已经检查了很多关于如何将一系列字符复制到 c 字符串中的示例,看起来这个完全一样。我可能只是无法理解指针。我不确定为什么它会吐出地址值。谁能指出我做错了什么?对于我的任何知识缺乏,我深表歉意。我的缩短代码如下:

struct node  
{
   int key;
   char month[20];
   struct node *next;
};

struct node *head = NULL;
struct node *current = NULL;

//display the list
void printList()
{
   struct node *ptr = head;
   printf("\n[ ");

   //start from the beginning
   while(ptr != NULL)
   {        
        printf("(%d,%d) ",ptr->key,ptr->month);
        ptr = ptr->next;
   }

   printf(" ]");
}

//insert link at the first location
void insertFirst(int key, char * month)
{
   //create a link
   struct node *link = (struct node*) malloc(sizeof(struct node));

   link->key = key;

   memcpy(link->month, month, 20);
   link->month[19] = 0; // ensure termination

   //point it to old first node
   link->next = head;

   //point first to new first node
   head = link;
}

int main() {

   insertFirst(1,"Jan");
   insertFirst(2,"March");

   printf("Original List: "); 

   //print list
   printList();
}

尝试

 printf("(%d,%s) ",ptr->key,ptr->month);

而不是 "curious output" 问题。

您正在打印指针 ptr->month,而不是实际的字符串。
尝试:printf("(%d,%s) ",ptr->key,ptr->month);%s 而不是 %d)。