gpt4 book ai didi

c - strcpy() 和 char

转载 作者:行者123 更新时间:2023-11-30 19:11:09 25 4
gpt4 key购买 nike

我想将字符串存储到结构内的 char 数组中,当我访问 char 数组时,我希望结果与全局变量 errCode 的值一起显示。当我访问结构体的 errDesc 成员时,我希望结果为“检测到错误,错误代码为 0xA0B0C0D0”,但由于使用 strcpy 按原样复制字符串,所以我得到的结果是“检测到错误,错误代码为 %08lx”。这是复制我的问题的示例代码:

int errCode = 0xA0B0C0D0;

void function(errpacket* ptr, int a, char* errString, ...);

typedef struct{
int err;
char errDesc;
}errpacket;

int main(){
errpacket* a;
void function(a, 10, "Error detected with error code %08lx", errCode);

return 0;
}

void function(errpacket* ptr, int a, char* errString, ...){
ptr->err = a;
strcpy(&ptr->errDesc, errString);
}

如果我的实现不正确,请建议我一种方法来完成我想做的事情。以上代码中的错误还请指出。

最佳答案

  1. 你必须typedef结构errpacketfunction(...)声明之前

  2. 变量 a在功能main()只是一个指针。如果尝试写入未初始化的指针,则会在函数内部出现段错误。

成员(member)errDesc只能保存一个字符,而不是字符串或字符数组。

试试这个...

int errCode = 0xA0B0C0D0;

typedef struct {
int err;
char* errDesc;
} errpacket;

void function (errpacket* ptr, int a, char* errString, ...);

int main () {
errpacket a;
function(&a, 10, "Error detected with error code %08lx", errCode);
return 0;
}

void function (errpacket* ptr, int a, char* errString, ...) {
ptr->err = a;
ptr->errDesc = strdup( errString);
}

关于c - strcpy() 和 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40614701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com