Вот мои структуры (определенные в заголовочном файле):Странные персонажи из массива символов в структуре
typedef struct
{
char *name;
char *value;
} struct_param;
typedef struct
{
char *UID;
int number;
char *type;
char *name;
struct_param param[10];
} struct_cmd;
прототип:
struct_cmd *ParseFile(char buffer[]);
Функция в гр файл:
struct_cmd *ParseFile(char buffer[])
{
struct_cmd *cmd;
cmd = malloc(sizeof(struct_cmd));
...
if (mxmlGetFirstChild(node_msgUID) != NULL)
cmd->UID = node_msgUID->child->value.opaque;
...
printf("Message Type :: %s | Message UID :: %s \n", cmd->type, cmd->UID);
...
return cmd;
Печать в ParseFile отлично работает.
Теперь от основной функции:
int main(int argc, char **argv)
{
...
struct_cmd *mystruct;
mystruct = malloc(sizeof(struct_cmd));
mystruct = ParseFile(buf);
printf("Message Type :: %s | Message UID :: %s \n", mystruct->type, mystruct->UID);
...
}
То же Printf не работает. Функция возвращает структуру, но значения странные ... Это не значения, а странные символы.
Любая идея? Благодаря
Вы должны были сделать 'cmd = malloc (sizeof (struct_cmd))' или 'cmd = & var', где это сделано, вы probably читаете ina varible, который выходит за рамки – Deepthought
Это не имеет смысла:' struct_cmd = * CMD; '. Вы присваиваете значение типу. Компилятор должен хотя бы предупредить об этом. Вы не показываете весь код? – user694733
Без изменений. Я добавил его в функцию, которая заполняет и возвращает структуру и перед вызовом этой функции. В функции printf все еще работает, но не в основном проекте. – 10h02