字符串数组的初始化字符串太长

问题描述:

我正在为游戏制作一个修补程序,但是我从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字符串。

+0

哦......我把两个维度混合在一起Xp – 2010-08-01 03:09:50

+0

@ kotarou3:那么你可能真的需要一个指向字符串的指针数组:'char * patches [] = {...};'。 – 2010-08-01 03:25:19

好了,声明一个字符串看起来是这样的:

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