2015-07-28 3 views
0
List * List_createNode(const char * str) 
    { 
List * dup = NULL; 
// dup = strdup(str);//figure this out 

if (dup == NULL) 
    { 
     fprintf(stderr, "\nString Duplication Fail 1\n"); 
     exit(EXIT_FAILURE); 
    } 

    dup -> str = strdup(str); 
    dup -> next = NULL; // we can also do zero 

    return dup; 
} 

Я пытаюсь создать новый узел списка с переданной строкой str. вместо malloc мне нужно использовать strdup для получения строки, которую я сделал следующим образом. Структура имеет 2 атрибута str и следующую.создание узла списка с переданной строкой

Это то, что у меня есть. Где я иду не так?

+2

'List * DUP = таНос (SizeOf (* DUP));' – BLUEPIXY

+0

да спасибо, я понял, что. что мне делать дальше, чтобы дублировать строку 'str'? –

+0

Поскольку это 'dup -> str = strdup (str);' – BLUEPIXY

ответ

0

А?

List * dup = NULL; 
if (dup == NULL) 
{ 
    fprintf(stderr, "\nString Duplication Fail 1\n"); 

Да, dup является NULL.

Try:

List * dup = malloc(sizeof(List)); 
if (dup == NULL) 
+0

эта ошибка один. Это глупо на моей стороне. что должно быть моим следующим шагом –

+0

спасибо за то, что вы заметили. –

0

strdup может быть использован только для строк. Для создания вашего узла , который является типом, который инкапсулирует строку, вы должны использовать malloc.

Я предполагаю, что вы не можете использовать malloc для того, чтобы дублировать строку (в противном случае это не имело бы никакого смысла)

Так что вам нужно будет сделать, это заменить, что комментировал строки кода (будет разобрался) с

dup = malloc(sizeof(List)); 
+0

да, вы правы. –

+0

спасибо, что помогли мне понять это –

Смежные вопросы