У меня проблема с копированием содержимого массива символов в связанном списке в обычный массив символов. У меня проблема с ошибкой сегментации, из-за которой я не уверен, почему.
Созданная мной программа работает, когда массив символов в связанном списке содержит только один символ, но не работает, когда он большечем 1. Основная проблема возникает в строке 62 («array [index] = p -> word [count]»). Я попытался с помощью strcpy скопировать каждый его индекс в массив символов, но это также привело к ошибке, которая гласит: «передача аргумента 2 в« strcpy »делает указатель из целого числа без приведения». Однако, когда я использую оператор присваивания, я просто получаю ошибку сегментации. Я не уверен, почему, потому что я чувствую, что создал достаточно памяти, чтобы иметь возможность хранить содержимое связанного списка для массива.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node
{
char word[100];
struct node *next;
} ListNode;
int main ()
{
ListNode * head = NULL;
ListNode * tail = NULL;
for (int count = 0; count < 5; count++)
{
ListNode * temp = malloc (sizeof (*temp));
strcpy(temp -> word, "Hi");
temp -> next = NULL;
if (tail == NULL)
{
head = temp;
tail = temp;
}
else
{
tail->next = temp;
tail = temp;
}
}
char array[999]; // array that will hold the characters in the linked list
ListNode * p = head; //position of the current node
int count;
int index = 0;
// while p is still a node in the list
while(p != NULL)
{
if((int) strlen(p -> word) > 1) // checks if the string is longer than one character
{
count = 0; // initializes count as 0
while(count < (int) strlen(p -> word)) // counts how many characters are in the string
{
array[index] = p -> word[count]; // assings the words into charater array
count++; // increments the count
index++; // changes the index
}
}
else
{
array[index] = p -> word[0]; // copies p-word to array
index++; // changes the index in the array
p = p -> next;
}
}
return 0;
}
Как упоминалось ранее, программа работает всякий раз, когда массив символов в связанном списке равен только 1, но возникает ошибка сегментации, когда число больше 1. Пожалуйста, дайте мне знать, что мне нужноисправить в этой программе. Спасибо.