字符串数组的初始化字符串太长
问题描述:
我正在为游戏制作一个修补程序,但是我从Mingw得到错误“字符数组的初始化字符串太长”。我正在尝试制作一个多维的字符数组,以包含要修补的功能。
我已经检查过关于这个问题的其他问题,并发现一个提问者忘记在每个字符串文字末尾添加逗号,但我已经这样做了。字符串数组的初始化字符串太长
任何人都可以帮助我吗?
触发错误源:
char patches2[][64] = {
"CreateMutexW",
"CreateRemoteThread",
"CreateRemoteThreadEx",
"[email protected][email protected]@@[email protected]",
"[email protected][email protected]@@[email protected]@@[email protected]@[email protected]",
"[email protected][email protected]@@[email protected]@@[email protected]@[email protected][email protected]",
"[email protected][email protected]@@[email protected]@@[email protected]@[email protected][email protected]",
"[email protected][email protected][email protected]@@[email protected]@@[email protected]@QBEPB_WXZ",
"[email protected]@[email protected]@[email protected][email protected]@@Z",
"[email protected]@@[email protected]",
"[email protected]@@[email protected]",
"[email protected]@@[email protected]@Z",
"[email protected]@@[email protected]@Z",
"[email protected]@@[email protected]@Z",
"[email protected]@@[email protected][email protected]",
"[email protected]@@[email protected][email protected]@@[email protected]@@[email protected]",
"[email protected]@[email protected]@YAKXZ",
"[email protected]@[email protected]@[email protected][email protected]@XZ",
"[email protected]@[email protected]@QAEKXZ",
"[email protected]@[email protected]@QAE_NXZ",
"[email protected]@[email protected]@[email protected]",
"[email protected]@[email protected]@[email protected]@[email protected]@[email protected]",
"[email protected]@[email protected]@QBE_KXZ",
"[email protected]@[email protected]@QAEEXZ",
"[email protected]@[email protected]@QAEMXZ",
"[email protected]@[email protected]@[email protected][email protected]@@[email protected]@@[email protected]@AB [email protected]@Z",
"[email protected]@[email protected]@QAEMXZ",
"[email protected]@[email protected]@QAEMXZ",
"[email protected]@@QBE_NXZ",
"[email protected]@[email protected]@[email protected]",
"[email protected]@[email protected]@[email protected]@[email protected]@Z",
"[email protected]@[email protected]@QBEMXZ",
"[email protected]@[email protected]@QBEKXZ",
"[email protected]@[email protected]@QBEKXZ",
"[email protected]@[email protected]@[email protected]",
"[email protected]@[email protected]@QBE_NXZ",
"[email protected]@[email protected]@QBE_NXZ",
"[email protected]@[email protected]@QBE_NXZ",
"[email protected]@[email protected]@QBE_NXZ",
"[email protected]@[email protected]@QBE_NXZ",
"[email protected]@[email protected]@QBE_NXZ",
"[email protected]@[email protected]@[email protected]@[email protected][email protected]@@[email protected]@@[email protected]@[email protected]@@Z",
"[email protected]@[email protected]@[email protected]@[email protected][email protected]@@[email protected]@@[email protected]@[email protected]@@Z",
"[email protected]@[email protected]@[email protected]@[email protected][email protected]@@[email protected]@@[email protected]@[email protected]@@Z",
"?_Render[email protected]@[email protected]@AAEXXZ",
"[email protected]@[email protected]@QBEGXZ",
"[email protected]@[email protected]@QBEMXZ",
"[email protected]@[email protected]@[email protected][email protected]@@[email protected]@@[email protected]@[email protected]@@Z",
"[email protected]@[email protected]@[email protected]",
"[email protected]@[email protected]@[email protected]@@[email protected][email protected]@@[email protected]@@[email protected]@Z",
"[email protected]@@[email protected][email protected]@@[email protected]@@[email protected]@[email protected]",
"[email protected]@@[email protected][email protected]@@[email protected]@@[email protected]@[email protected]@[email protected]",
"[email protected]@@YA_KXZ",
"[email protected]@@[email protected]",
"[email protected]@[email protected]@QBE_NXZ",
"[email protected]@[email protected]@[email protected]",
"[email protected]@[email protected]@[email protected]@@Z",
"[email protected]@[email protected]@QBE_NXZ",
"[email protected]@[email protected]@QAEKXZ",
"[email protected]@[email protected]@QBE_NXZ",
"[email protected]@[email protected]@[email protected]",
"[email protected]@[email protected]@[email protected]",
"[email protected]@[email protected]@QBE?B_NXZ",
"[email protected]@[email protected]@[email protected]@@Z"
};
答
char patches2[][64]
这是一个数组的数组。第一个维度由初始化程序中元素的数量自动确定。第二个维度被指定为64 char
s。
您初始化的一些字符串文字patches2
长度超过64个字符。您需要将大小增加到某个足够大的值,以保存初始化程序中最大的C字符串。
答
好了,声明一个字符串看起来是这样的:
const char* myString = "MyString";
你可能想要的是一个const char*
秒的阵列。您可以将char patches2[][64]
更改为const char* patches2[]
(指向const char
的指针数组)。
的const char*
S IN patches2
数可以使用sizeof()
计算:
const char* patches2[] = {"CreateMutexW", /* The rest... */ };
int numPatches = sizeof(patches2)/sizeof(const char*);
所以,如果你添加/删除一些字符串,你没有更新的尺寸。
+0
你的回答并不是我的问题的答案,但这是我可以放入的东西:) – 2010-08-01 03:23:39
哦......我把两个维度混合在一起Xp – 2010-08-01 03:09:50
@ kotarou3:那么你可能真的需要一个指向字符串的指针数组:'char * patches [] = {...};'。 – 2010-08-01 03:25:19