isalpha()?或其他.. Debug断言失败了,CircleMud游戏

isalpha()? or others... debug assertion failed, circlemud game

本文关键字:失败 CircleMud 游戏 断言 Debug 其他 isalpha      更新时间:2023-10-16

请原谅我使用翻译器。

我是编程的初学者。

正在修改了数十年的环形。尽管它已经进行了本地化,并且可以在VC6.0中实施,而没有任何问题,但韩国名称进入vs vs vs vs vs vs vs vs 2019。

游戏很古老,以至于韩国的大多数社区都消失了,所以我找不到帮助并参观了这个地方。我希望我会说英语,但是...

输入韩语(CP949或?(会导致Ishanalp((崩溃。当我添加/j并编译时,韩国的输入没有崩溃,但我无法识别韩语名称。

删除isalpha((部分将允许访问游戏,但是在打印或存储名称的区域将发生崩溃。

调试断言失败了!

文件;isctype.cpp线:36

表达式:c> = -1&&C<255

#define ishan(ch) (((ch) & 0xE0) > 0x90)
#define ishanasc(ch) (isascii(ch) || ishan(ch))
#define ishanalp(ch) (isalpha(ch) || ishan(ch))
#define isnhdigit(ch) (!ishan(ch) && isdigit(ch))
#define isnhspace(ch) (!ishan(ch) && isspace(ch))
int _parse_name(char *arg, char *name) 
{
int i;
/* skip whitespaces */
for (; isnhspace(*arg); arg++);
     for (i = 0; (*name = *arg); arg++, i++, name++)
         if (!ishanalp(*arg)) // here debug assertion failed line 36
             return 1;
         if (!i)
            return 1;
            return 0;
   }

ishanalp(static_cast<unsigned char>(*arg))应该修复它,呼叫isnhspace的更改相同。

鲜为人知的是,is...字符分类功能不使用char参数,而是采用int参数,该参数必须具有 unsigned char value或EOF。如果char是签名类型(通常为(,并且您的值为负值,则is...函数可能会失败。

我还建议将这些宏作为内联函数重新编码。