我在Windows 7.0 x64上使用C++ Visual Studio .Net 4.0.这只发生在while语句的第一个循环上.
int main()
{
char *string = new char[11];
string = "characters\0";
toUppercase(string);
return 0;
}
void toUppercase(char *stringPtr)
{
while(*stringPtr != '\0')
{
if(*stringPtr >= 'a' && *stringPtr <= 'z')
{
*stringPtr = *stringPtr - 32; // this is the culprit
}
++stringPtr;
}
}
Run Code Online (Sandbox Code Playgroud)
我怀疑你做的是这样的:
toUppercase("test");
Run Code Online (Sandbox Code Playgroud)
问题是"test"数组const char,不是char,所以无法修改.但是,由于非常愚蠢的弃用特殊转换,char*无论如何都可以将字符串文字视为.
(您的功能也无法测试toUppercase(0).)