尝试仅使用 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
)。
我试图仅使用 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
)。