Выделение памяти для указателя на символ, который является частью структуры - PullRequest
1 голос
/ 21 апреля 2010

я пытаюсь прочитать слово от пользователя, затем динамически выделить память для слова и сохранить его в массиве struct, который содержит символ *. я продолжаю получать неявное объявление функции âstrlenâ, так что я знаю, что я где-то ошибаюсь.

struct unit
{
  char class_code[4];
  char *name;
};

char buffer[101];
struct unit units[1000];

scanf("%s", buffer);

units[0].name = (char *) malloc(strlen(buffer)+1);
strcpy(units[0].name, buffer);

Ответы [ 4 ]

7 голосов
/ 21 апреля 2010

Implicit declaration of function 'strlen' означает, что вы забыли #include заголовок, который его объявляет, в данном случае <string.h>

Это единственная ошибка, которую я вижу в вашем коде.

4 голосов
/ 21 апреля 2010

Помимо отсутствующего заголовка, string.h, вы можете заменить ваш malloc + strcpy на strdup.

units[0].name = strdup(buffer);
2 голосов
/ 21 апреля 2010
#include <string.h>
1 голос
/ 21 апреля 2010

Убедитесь, что вы делаете:

#include <string.h>

для включения объявления функции strlen ().

Кроме того, вы действительно должны использовать strnlen () и strncpy () для предотвращения ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...