我在开发《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;
}