c - 使用数组的 Win32 API

标签 c arrays

我是程序员的初学者。我不明白为什么不能将一些脚本从数组复制到另一个数组。

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/

相关文章:

C - 在方法中使用 typedef

c - 如何更改此 C 代码以预取一些数据?

c - OpenSSL RSA_sign() 返回零错误代码

c - 如何在 C 中将 char* 复制到 char* 数组

Java:无符号字节到 int 的转换工作完美,除了 129 (0x81) 之外

Javascript数组拼接导致内存不足异常?

将一个数组的某些内容复制到另一个数组,而不重复所包含的数据

python - 一种在 C 中模拟命名参数的方法

c++ - 如何从最大到最小组织一个数组中的前10个频繁值?

python - 使用 NumPy 进行深度堆叠