我正在尝试在链接列表中的节点之间交换数据字段,在交换char数组时遇到问题。这只是程序的一个示例。
struct node {
int count;
char word[50];
struct node *next;
};
void swap_nodes( struct node *first, struct node *second ) {
int temp_count;
char *temp_word;
temp_count = first->count;
temp_word = first->word;
first->count = second->count;
first->word = second->word;
second->count = temp_count;
second->word = temp_word;
}
让我知道我做错了什么,我在c语言写作方面很新。
最佳答案
将字符数组指定给指针时,不会复制该数组:
char *temp_word;
temp_word = first->word;
temp_word
指向数组的初始元素,因此分配给数组也会更改指针指向的数据。可以通过声明50个字符的数组并使用
strcpy
或memcpy
进行复制来解决此问题:char temp_word[50];
memcpy(temp_word, first->word, sizeof(temp_word));
memcpy(first->word, second->word, sizeof(temp_word));
memcpy(second->word, temp_word, sizeof(temp_word));
关于c - 在C中的节点之间交换字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26007223/