我试图仅使用C将一个硬编码字符串插入到struct的char数组值中,所以我使用了memcpy,跟随另一篇文章中的示例。但出于某种原因,我不断得到一个看起来像地址的输出,我不知道为什么。
我的控制台打印出来:[(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();
}
答案 0 :(得分:3)
您正在打印指针ptr->month
,而不是实际的字符串
请尝试:printf("(%d,%s) ",ptr->key,ptr->month);
(%s
代替%d
)。
答案 1 :(得分:2)
尝试
printf("(%d,%s) ",ptr->key,ptr->month);
而不是“好奇的输出”问题。