是否为osx标准库实现swscanf子字符串格式化([a-z])

Is swscanf substring formatting ([a-z]) implemented for osx standard lib?

本文关键字:格式化 a-z 字符串 osx 标准 swscanf 实现 是否      更新时间:2023-10-16

下面的代码可以在windows上运行,但不能在osx上运行。

swscanf上的文档说:

"……wscanf()的一些实现使用"A-Z"来表示'A'和'Z'之间的字符范围。"

通过某些实现,是否意味着osx不实现它?

int main(int argc, const char* argv[])
{
    {
        wchar_t foo[] = L"bif3.zip";
        wchar_t buh[10] = L"";
        int val = 0;
        wchar_t ext[4] = L"";
        int s = swscanf(foo, L"%[a-z]%d.%ls", buh, &val, ext);
        wprintf(L"wchar: %ls %d %lsn", buh, val, ext);
    }
    {
        char foo[] = "bif3.zip";
        char buh[10] = "";
        int val = 0;
        char ext[4] = "";
        int s = sscanf(foo, "%[a-z]%d.%s", buh, &val, ext);
        printf("char: %s %d %sn", buh, val, ext);
    }
}
结果:

wchar:  0
char: bif 3 zip

swscanf(3)的手册页在"bug"部分声明如下:

除了在scanf(3)中记录的错误之外,wscanf()不支持使用字符类转换(' %[')指定字符范围的" A-Z "表示法。

请随时向Apple提交bug报告。