将汉字数字转化成阿拉伯数字。这只是个DEMO,无需在意细节。
#define _CRT_SECURE_NO_WARNINGS
#include <assert.h>
#include <stdio.h>
#include <wchar.h>
#include <Windows.h>
#include <locale.h>
const wchar_t* cnDigits = L"一二三四五六七八九十";
const wchar_t* digits = L"1234567891";
wchar_t buf[MAX_PATH];
void dgtConvert(wchar_t* d);
int main(void)
{
setlocale(LC_ALL, "zh_CN");
assert(SetCurrentDirectoryW(L"D:\\组原"));
WIN32_FIND_DATAW fd;
HANDLE hfd = FindFirstFileW(L"*", &fd);
assert(hfd != INVALID_HANDLE_VALUE);
do {
wprintf(L"%s", fd.cFileName);
int p = wcscspn(fd.cFileName, cnDigits);
int len = (int)wcslen(fd.cFileName);
if (p < len) {
wcscpy(buf, fd.cFileName);
for (; p < len; p++) {
dgtConvert(&buf[p]);
}
wprintf(L" -> %s", buf);
assert(MoveFileW(fd.cFileName, buf));
}
putchar('\n');
} while (FindNextFileW(hfd, &fd));
return 0;
}
void dgtConvert(wchar_t* d)
{
wchar_t* pCn = wcschr(cnDigits, *d);
if (!pCn) {
return;
}
*d = digits[pCn - cnDigits];
}