注册 登录
编程论坛 C语言论坛

1.请问怎么用代码判断一个exe文件的字节数 2.为什么有些文件和其他文件打不开.

a451410 发布于 2024-11-27 02:55, 699 次点击
问题一,读取文件字节数和实际的对不上
首先我用了这种方法,但是得到的数值是错误的.一些几K的反而判断正确,一百多K的就不行.如下
我才用了这种方法:
fseek(file_1, 0, SEEK_END); // 将指针移动到文件末尾
long file_size = ftell(file_1); // 获取文件指针当前位置(文件大小)
结果得到的结果不对,但是一些几K的小文件读取是对的,很奇怪.如下图
只有本站会员才能查看附件,请 登录


问题二,有些文件打开失败,
同样路径下的exe文件,txt文件都能打开,但是其他的如nls和dll文件都打不开
用perror打印失败信息,显示找不到此文件,如下图标红处两个文件都打不开
只有本站会员才能查看附件,请 登录
4 回复
#2
a4514102024-11-27 03:25
额!您猜怎么着! 我找到原因了,但是陷入了更大的疑惑!
以上两个问题产生的原因,是因为我操作的文件在C\windows\system32文件夹里.
换个文件夹后,所有的问题都没了.
所以,,,,我搞不明白
为什么会这样!!!!
啊啊啊,为什么,要疯了
#3
yiyanxiyin2024-11-27 11:01
程序代码:
#include <stdio.h>

int main ()
{
   FILE *fp;
   int len;
   char* filename= (char*)"C:\\Windows\\system32\\notepad.exe";   
   //char* filename= (char*)"C:\\Windows\\System32\\normnfkd.nls";
   fp = fopen(filename,"rb");
   if( fp == NULL )
   {
      perror ("打开文件错误");
      return(-1);
   }
   fseek(fp, 0, SEEK_END);

   len = ftell(fp);
   fclose(fp);

   printf("%s 的总大小 = %d 字节\n", filename,len);
   
   return(0);
}

上面的代码经测试没问题
#4
forever742024-11-27 18:37
我要是妙妙屋的主人...
哦,错了。我要是windows的话,我也不让你乱搞system32
很久很久以前,有个叫共工的,一头撞坏了内核堆栈,搞得地球OnLine差点死机了,还好女娲进程给力。

从那以后,就有了权限这个东西,就是为了限制像你这样对操作系统缺乏敬畏的程序员的。
#5
吹水佬7 天前 19:39
是不是32位或64位的问题,64位系统有32位和64位的系统文件。
1