C 初始化从指针生成整数而不强制转换
我试图用特定的参数定义一个结构,但我想知道是否有更好的方法来初始化结构而不使用内存分配 结构定义:C 初始化从指针生成整数而不强制转换,c,struct,C,Struct,我试图用特定的参数定义一个结构,但我想知道是否有更好的方法来初始化结构而不使用内存分配 结构定义: #define MAXLINE 1024 #define MAXNAME 256 #define MAXPATH 1024 typedef enum { BL_MESG = 10 } mesg_kind_t; // mesg_t: struct for messages between server/client typedef struct { mesg_kind_
#define MAXLINE 1024
#define MAXNAME 256
#define MAXPATH 1024
typedef enum {
BL_MESG = 10
} mesg_kind_t;
// mesg_t: struct for messages between server/client
typedef struct {
mesg_kind_t kind; // kind of message
char name[MAXNAME]; // name of sending client or subject of event
char body[MAXLINE]; // body text, possibly empty depending on kind
} mesg_t;
typedef struct {
char name[MAXPATH];
} client_t;
我是如何创建消息的
mesg_t create_mesg(client_t *client, char *text){
char * cl_name = client->name;
mesg_t msg = {BL_MESG, "", ""};
strcpy(msg.name, cl_name);
strcpy(msg.body, text);
return msg;
}
有没有一种不用strcpy就初始化它的方法?这里有什么明显的东西我完全不知道吗?你不能这样做。您需要使用通过值传递和复制的内容。在C语言中,它可以是
struct
或union
#define MAXLINE 1024
#define MAXNAME 256
#define MAXPATH 1024
typedef enum {
BL_MESG = 10
} mesg_kind_t;
struct names
{
char name[MAXNAME];
};
struct bodys
{
char body[MAXNAME];
};
typedef struct {
char name[MAXPATH];
} client_t;
// mesg_t: struct for messages between server/client
typedef struct {
mesg_kind_t kind; // kind of message
client_t name; // name of sending client or subject of event
struct bodys body; // body text, possibly empty depending on kind
} mesg_t;
#define MAKENAME(str) (struct bodys){str}
#define MAKEBODY(str) (client_t){str}
mesg_t create_mesg(client_t *client, struct bodys text){
mesg_t msg = {BL_MESG, *client, text};
return msg;
}
void foo()
{
create_mesg(&MAKEBODY("This is client"), MAKENAME("this is body"));
}
该代码没有标题中提到的错误。因此,要么修复标题,要么显示您询问的代码。我无法设置强制转换、内存分配和strcpy之间的连接。你能说得更具体些吗?要动态初始化它吗?你到底想做什么?strcpy有什么问题?为什么要避免内存分配?