这段代码如何转成兼容unicode的
本帖最后由 拈花小仙 于 2014-3-22 10:12 编辑#include<windows.h>
#include<stdio.h>
int main()
{
BOOL done=TRUE;
WIN32_FIND_DATA fd;
HANDLE hFind = FindFirstFile("e:\\*.*", &fd);//第一个参数是路径名,可以使用通配
符,懂 DOS 的人应该知道吧!fd 存储有文件的信息
while (done)
{
printf("%s\n",fd.cFileName);
done=FindNextFile(hFind, &fd); //返回的值如果为 0 则没有文件要寻了
}
return 0;
} 拈花小仙 发表于 2014-3-14 19:42 static/image/common/back.gif
这个改成兼容unicode码后,无法输出中文的文件名。不知怎么才能输出
#include<windows.h>
#include<stdio.h>
#include <locale.h>
int main()
{
BOOL done=TRUE;
WIN32_FIND_DATA fd;
HANDLE hFind = FindFirstFile(TEXT("i:\\*.*"), &fd);
setlocale(LC_CTYPE, "chs");
while (done)
{
wprintf(TEXT("%s\n"),fd.cFileName);
done=FindNextFile(hFind, &fd);
}
return 0;
}
HANDLE hFind = FindFirstFile(L"e:\\*.*", &fd);//第一个参数是路径名,可以使用通配
当前文件是用 . 表示
上一级目录在当前目录中可以查询到 是 .. 向往青莲 发表于 2014-3-14 18:32 static/image/common/back.gif
HANDLE hFind = FindFirstFile(L"e:\\*.*", &fd);//第一个参数是路径名,可以使用通配
当前文件是用 . 表示 ...
如果这么改谁都知道呀,可是改了后,输出就成乱码了,你用VC6?VC6默认是多字节? 拈花小仙 发表于 2014-3-14 18:47 static/image/common/back.gif
如果这么改谁都知道呀,可是改了后,输出就成乱码了,你用VC6?VC6默认是多字节?
我不用VC6.。。我试试。。。 #ifndef UNICODE
#define UNICODE
#endif 向往青莲 发表于 2014-3-14 18:51 static/image/common/back.gif
我不用VC6.。。我试试。。。
HANDLE hFind = FindFirstFile(TEXT("I:\\*.*"), &fd); 我擦。。。。我居然取用L。。。我就说咋不对呢。。。。。
尼玛。。。。。。。SB了。。我 my_angel 发表于 2014-3-14 18:55 static/image/common/back.gif
#ifndef UNICODE
#define UNICODE
#endif
直接改成兼容unicode到是可以,问题是改了后输出的是乱码,所以我想知道有没有对应的版本,怎样改成兼容unicode后,不是乱码的 向往青莲 发表于 2014-3-14 18:57 static/image/common/back.gif
我擦。。。。我居然取用L。。。我就说咋不对呢。。。。。
尼玛。。。。。。。SB了。。我
直接改成兼容unicode的也不报错,可是会成乱码,我想知道的是怎样兼容,并且让这代码有用。 拈花小仙 发表于 2014-3-14 19:00 static/image/common/back.gif
直接改成兼容unicode的也不报错,可是会成乱码,我想知道的是怎样兼容,并且让这代码有用。
好吧。。其实我没明白。。你想说的是啥意思? 向往青莲 发表于 2014-3-14 19:01 static/image/common/back.gif
好吧。。其实我没明白。。你想说的是啥意思?
我把这段代码改成兼容unicode后,可输出到屏幕上的全是乱码?你运行试下 拈花小仙 发表于 2014-3-14 19:04 static/image/common/back.gif
我把这段代码改成兼容unicode后,可输出到屏幕上的全是乱码?你运行试下
兼容unicode怎么改? #include<windows.h>
#include<stdio.h>
int main()
{
BOOL done=TRUE;
WIN32_FIND_DATA fd = {0};
HANDLE hFind = FindFirstFile(TEXT("I:\\*.*"), &fd);//第一个参数是路径名,可以使用通配符,懂 DOS 的人应该知道吧!fd 存储有文件的信息
while (done)
{
#ifdef UNICODE
printf("%S\n",fd.cFileName);
#else
printf("%s\n",fd.cFileName);
#endif
done=FindNextFile(hFind, &fd); //返回的值如果为 0 则没有文件要寻了
}
return 0;
} 向往青莲 发表于 2014-3-14 19:13 static/image/common/back.gif
还是不行,如果这么简单的话,我就不问了,改成unicode能运行的代码不难,可是改了后,结果不对了,你用我上面的代码转成多字节看下效果;在改成unicode码的,修改下代码看输出结果呀 拈花小仙 发表于 2014-3-14 19:18 static/image/common/back.gif
还是不行,如果这么简单的话,我就不问了,改成unicode能运行的代码不难,可是改了后,结果不对了,你用我 ...
额。。。。这么蛋疼。。。。我只看见有结果。。结果正不正确就没看了。。。 向往青莲 发表于 2014-3-14 19:20 static/image/common/back.gif
额。。。。这么蛋疼。。。。我只看见有结果。。结果正不正确就没看了。。。
是呀,我转了码以后发现不正确,这才来求教。 拈花小仙 发表于 2014-3-14 19:04 static/image/common/back.gif
我把这段代码改成兼容unicode后,可输出到屏幕上的全是乱码?你运行试下
#define _UNICODE
#define UNICODE
#include <WINDOWS.H>
void main()
{
TCHAR str = TEXT("Hello World");
MessageBox(NULL,str,NULL,MB_OK);
}
_UNICODE宏用于C运行期头文件,而UNICODE宏则用于Windows头文件。当编译源代码模块时,通常必须同时定义这两个宏。
另外要使用TCHAR,因为他会根据你的声明情况设置字符串类型ASCI还是Unicode。。 #define _UNICODE
#define UNICODE
#include<windows.h>
#include<tchar.h>
#include<stdio.h>
int main()
{
BOOL done=TRUE;
WIN32_FIND_DATA fd;
HANDLE hFind = FindFirstFile(_T("e:\\*.*"), &fd);//第一个参数是路径名,可以使用通配符,懂 DOS 的人应该知道吧!fd 存储有文件的信息
while (done)
{
_tprintf(_T("%s\n"),fd.cFileName);
done=FindNextFile(hFind, &fd); //返回的值如果为 0 则没有文件要寻了
}
return 0;
} 仰望天上的光 发表于 2014-3-14 19:35 static/image/common/back.gif
#define _UNICODE
#define UNICODE
#include
这个改成兼容unicode码后,无法输出中文的文件名。不知怎么才能输出
页:
[1]
2