我是程序员的初学者。我不明白为什么不能将一些脚本从数组复制到另一个数组。
char array1[11];
char array2[2];
array1 = {'255 105 85'};
array2[0] = array1[0];
array2[1] = array1[1];
array2[2] = array1[2];
MessageBox(hwnd,array2,"mes",NULL);
我得到的是“5”而不是“255”。 我使用 code::blocks 和 GCC complier.The project created with win32 frame based. 有人知道导致问题的原因吗?
最佳答案
C 中不允许以下结构:
array1 = {'255 105 85'};
相反,您可以考虑像这样使用静态数组初始化:
char array1[11] = {255, 105, 85};
这将用 3 个指定值填充 array1,并将所有其他元素设置为 0(即从索引 3 开始到索引 10 结束的元素)。
令人惊讶的是,为什么编译器在您的情况下没有发出语法错误
更新: 另请注意,当您有像这样的 array1[2] 的表达式时,您正在使用单个字符进行操作。如果你想对字符串进行操作(即你指定的数字有 3 个单独的字符串),你必须声明如下:
char *array1[3] = {
"255",
"105",
"85"
};
char *array2[3];
array2[0] = array1[0];
array2[1] = array1[1];
array2[2] = array1[2];
因此你将得到一个字符串数组。 array1 的每个条目将包含字符串“255”所在内存的指针(地址)(请注意,“255”是一个包含 4 个字符的数组:'2'、'5'、'5'、'\0 ').
关于c - 使用数组的 Win32 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11694598/