arrays - 将 char 变量存储在 C 中的其他 char 变量中
问题描述
我正在尝试执行以下操作,使用其他 char 变量创建一个多字符数组。
char data_info_1[] = "Wellcome.";
char data_info_2[] = "Please";
char data_info_3[] = "If";
int size_line= sizeof(data_info_1)/sizeof(data_info_1[0]);
char data_info[3][size_line]={{data_info_1},{data_info_2},{data_info_3}};
一种解决方案是以下一种,但我对只是将字符串放在 data_info 变量中不感兴趣
char data_info[3][size_line]={{"Wellcome"},{"Please"},{"If"}};
你能解释一下为什么我写的第一件事是无效的。如果我的问题有解决方案。
谢谢。
解决方案
要回答您的问题,您的解决方案都不正确,您不能像这样初始化二维字符数组。
如果它不是可变大小的数组,则第二个选项将是有效的,即
char data_info[3][10]={"Wellcome", "Please" ,"If"};
^
Valid -> fixed size
如果你有一个指针数组,那么这样的赋值是可能的:
char *data_info[] = {data_info_1, data_info_2, data_info_3}; //1
或者
const char *data_info[] = {"Wellcome", "Please", "If"}; //2
但这些可能不是您所需要的。
选项 1 将包含指向原始字符串的指针,通过这些指针对它们所做的任何更改都将反映在原始字符串中。
选项 2,指针正在使用字符串文字进行初始化,并且无法更改,这就是我添加const
限定符作为安全指标的原因。
如果这些约束都不适合你,你需要用类似的东西复制字符串strcpy
,strncpy
或者更好memcpy
:
#include <string.h>
//...
memcpy(data_info[0], data_info_1, sizeof data_info_1);
memcpy(data_info[1], data_info_2, sizeof data_info_2);
memcpy(data_info[2], data_info_3, sizeof data_info_3);
推荐阅读
- javascript - codeSandBox (React/Node) 的 Http 请求错误
- reactjs - 使用 reactjs 在一个输入字段中键入禁用其他输入字段
- android - Firebase 数据库不存储数据,logcat 没有显示错误
- javascript - 从输入类型 = 文件在数据库(Hibernate、JPA、Spring)中插入字节 []
- javascript - 无法将数据传递到材质对话框 - Angular2+
- android - 应用程序安装期间的 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 错误
- html - 为什么表格标题不使用宽度设置?
- python - 如何使用 Python 窥探 Google Dataflow / Apache Beam 内部
- c++ - 输出一个可能是三种类型之一的数字
- ios - iOS 11 - 当 DisplayMode.primaryHidden 更改为 .allVisible 时,SplitViewController 主导航表视图更改状态栏颜色