arrays - C. 我需要放入一个二维 char 数组,但在循环之外,结果是每一个最后的数据
问题描述
int main()
{
int i = 0;
char *string[2][5], trunkcode[50];
while (i <= 1)
{
if(i == 0)
strcpy(trunkcode,"test0");
else if(i == 1)
strcpy(trunkcode,"test1");
string[i][0] = trunkcode;
printf("trunkcode %s\n",string[i][0]);
++i;
}
printf("\n");
printf("trunkcode %s\n",string[0][0]);
printf("trunkcode %s\n",string[1][0]);
return 0;
}
输出:
中继代码测试0 中继
代码测试1
中继代码测试1
中继代码测试1
为什么输出不是
中继代码测试0 中继
代码测试1
中继代码测试0 中继
代码测试1
解决方案
只有一个trunkcode
数组。两者都string[0][0]
包含string[1][0]
指向同一个数组的指针。您将数组的内容替换为strcpy()
代码,因此在循环结束时数组包含test1
,并且两个指针都指向该内容。
你不需要trunkcode
数组。只需制作string
一个二维字符数组而不是指针。
int main()
{
int i = 0;
char string[2][50];
while (i <= 1)
{
if(i == 0)
strcpy(string[i],"test0");
else if(i == 1)
strcpy(string[i],"test1");
printf("trunkcode %s\n",string[i]);
++i;
}
printf("\n");
printf("trunkcode %s\n",string[0]);
printf("trunkcode %s\n",string[1]);
return 0;
}
推荐阅读
- c - 如何强制 GCC 生成特定的浮点指令
- reactjs - 如何为 react-table 使用第三方类型声明?
- python - 打印正则表达式的所有子字符串
- python - 如何在另一个文件 test_1.py 中处理在 pytest 的 setup 和 teardown 方法中生成的会话
- stripe-payments - 创建新订阅时忽略 billing_cycle_anchor 并立即创建发票。为什么会这样?
- python - 更改与条件匹配的列中行的值与 Pandas 中列表或系列中的值
- c++ - 私有继承导致c ++中的问题
- django - Django Azure AD 集成
- ruby - 杰基尔没有开始
- vba - VBA - 在用户表单上输入 ListBox,处理退格