char 数组转换为结构内的字符串

标签 c string string-concatenation arrays

我有一个 4 个字符的数组,例如:

char char_array[10];

char_arr[0] = 'a';
char_arr[1] = 'b';
char_arr[2] = 'c';
char_arr[3] = 'd';
char_arr[4] = '\0';

我有一个结构:

typedef struct{
int my_int;
char *my_string;
} my_struct_t;

my_struct_t my_struct;  

my_struct.my_string = malloc(10);

我想将 char 数组分配给字符串 my_struct.my_string 我该如何做到这一点?我尝试了以下方法:

尝试:1

my_struct.my_string = malloc(10) 
my_struct.my_string[0] = char_arr[2];
my_struct.my_string[1] = char_arr[2];
my_struct.my_string[2] = '\0';

尝试:2

strcpy(my_struct.my_string, char_arr);

两者都失败,即目标为空(编译成功)。为什么上面的方法失败了,我该如何克服这个问题?

我在堆栈中同时拥有结构体和字符数组,因为一旦退出函数我就不需要它们了。在分配内存之前,我已将内存分配给 my_struct.my_string

最佳答案

如果 char_arrchar[N] 类型,则 malloc 数组为 sizeof(char_arr)/sizeof(char_arr[ 0])my_struct.my_string。然后使用 strcpy 复制每个索引处的值。完成后终于免费

关于char 数组转换为结构内的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9845340/

相关文章:

c# - 构建大字符串(例如 SQL 命令)C# 编译器有多聪明?

c - OpenSSL 向具有证书颁发机构的客户端提供服务器证书?

c++ - 在 CUDA 中编写内核函数的正确方法?

java - 将整数格式化为 %d 和 %s 有什么区别?

c# - 文件 ReadAllLines 将外语变成乱码 (�)

c++ - 使用字符串作为缓冲容器

SQL Server 类型转换行为

Java += 运算符?

c - 在 Swift 3 中读取 TrueType 'cmap' 格式 4 子表

c - pcap_compile() 表达式