注册 登录
编程论坛 VC++/MFC

检查文件名是否含不可打印字符的C++代码源码

wsgsoft 发布于 2023-09-15 12:55, 417 次点击
本篇文章属于《518抽奖软件开发日志》系列文章的一部分。

我在开发《518抽奖软件》(www.)的时候,有时候需要检查输入的是否是合法的文件名,文件名是否含不可打印字符等。代码如下:
程序代码:

//-------------------------------------
//-1: 含不可打印字符
// 0:无效
// 1: 有效
//-------------------------------------
int Tapp::is_validFlnm(const WCHAR* name)
{
    if (!name || *name == 0) return 0;
    int len = 0;
    for (int i = 0; 1; i++)
    {
        if (name[i] == 0) {
            len = i;
            break;
        }
        if (name[i] == L'\\' || name[i] == L'/' || name[i] == L':' ||
            name[i] == L'*' || name[i] == L'?' || name[i] == L'\"' ||
            name[i] == L'<' || name[i] == L'>' || name[i] == L'|') return 0;

        WORD type = 0;
        GetStringTypeW(CT_CTYPE1, &name[i], 1, &type);
        if (type & C1_CNTRL) return -1;
    }
    if (name[len - 1] == L'.' || name[len - 1] == L' ' || name[0] == L' ')
        return 0;
    return 1;
}
0 回复
1