用fopen怎么打不开中文文件??

mousefather 2003-10-20 04:57:21
我要做一个在纯dos下运行的程序,需要对每个目录下的文件进行一些操作,但是这些文件有用中文命名的,在dos下用dir看是乱码,我用findfirst和findnext可以找到那些乱码的件名,但是我用fopen打开这些乱码文件名时就出错,不知道有没人做过这方面的研究?
...全文
696 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mousefather 2003-10-21
  • 打赏
  • 举报
回复
那些杀毒工具好像都可以,大家有没用过dos下的杀毒工具,如果你的文件是中文的,在它杀毒的时候显示的是一堆乱码,但是它照样能杀,不知道他是怎么实现的
mousefather 2003-10-21
  • 打赏
  • 举报
回复
我在windows在编辑一个文件,大概是这样的:
FILE *fp;
fp=fopen("啊.txt","rb");
printf("%p\n",fp);
再用tc打开编译生产exe文件
在windows下打的开,打印的是一个地址,而如果我把这个程序在dos在运行,打印的就是空指针,说明在dos下打不开这个文件!
请高手解释一下
kisa99 2003-10-21
  • 打赏
  • 举报
回复
在dos下先运行pdos95.看有用不,我也没试过。
wxw20032004 2003-10-21
  • 打赏
  • 举报
回复
蛮难的,我再想想....
bestfyj 2003-10-21
  • 打赏
  • 举报
回复
建议你不要着急,逐步跟踪,找到问题的根源
mousefather 2003-10-21
  • 打赏
  • 举报
回复
里面是对这个文件打开然后做一些计算,如果是英文的一点问题都没有,但是如果是中文文件在fopen的时候就出错
MDFILE这个函数非常复杂,是作一个MD5算法,但是第一步是fopen这个文件,在第一步就出错了,应该问题是出在fopen上
mfc168 2003-10-21
  • 打赏
  • 举报
回复
你的MDFile这个函数内容是什么?问题一定就在里面!
mousefather 2003-10-21
  • 打赏
  • 举报
回复
不是长度问题,我的文件名是“啊.txt",指针应该也没问题,因为如果是英文名的文件都可以打开
if(findfirst(filetype,&c_file,FA_DIREC|FA_HIDDEN|FA_RDONLY|FA_SYSTEM|FA_ARCH)== -1L )
printf( "No files this directory!\n" );
else
{
do
{
if(((c_file.ff_attrib&0x10)==0x10)&&(c_file.ff_name[0]!='.')){
//if (((c_file.ff_attrib==FA_DIREC)) &&(c_file.ff_name[0]!='.')) {
//if(c_file.ff_name[0]=='.'&&c_file.ff_name[1]=='.'){
if(chdir(c_file.ff_name)==0)
{
findfile("*.*");
chdir("..");
}
else
fprintf(probfile,"%s->%s\n", pathname,c_file.ff_name);
}
else
{
if (pathname[strlen(pathname)-1]=='\\')
sprintf(filename,"%s%s",pathname,c_file.ff_name);
else
sprintf(filename,"%s%s%s",pathname,"\\",c_file.ff_name);

if ((c_file.ff_name[0]!='.') && (!strstr(outfilename,c_file.ff_name))) {

md5digest=MDFile(c_file.ff_name);//这里对文件进行打开等一些操作,如果是英文文件没有问题,如果是中文就答不开了
fprintf(outfile,"\"%s\", %s\n",filename,md5digest);
printf("Examining: %s, %s\n",filename,md5digest);
}
}
} while(findnext(&c_file ) == 0 );

}
Caoyu015 2003-10-20
  • 打赏
  • 举报
回复
可能是文件名称长度有问题.
lpclpc 2003-10-20
  • 打赏
  • 举报
回复
乱码的文件名??
能否贴个代码?
allen1981813 2003-10-20
  • 打赏
  • 举报
回复
指针用的对吗?
mousefather 2003-10-20
  • 打赏
  • 举报
回复
是啊,我都可以把它打印出来,但是用fopen就是打不开
sandra423 2003-10-20
  • 打赏
  • 举报
回复
你得到的文件名是乱码吗?

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧