按大小比较 C 中的 2 个文件

标签 c function compare

我有这段代码,但它在第 5 行(fseek)中抛出错误。

int cmpFILEd(void *aa,void *bb){
    int size1,size2;
    FILE *a=(FILE*)aa;
    FILE *b=(FILE*)bb;
    fseek(a,0,SEEK_END);
    fseek(b,0,SEEK_END);
    size1=ftell(a);
    size2=ftell(b);
    if(size1==size2)
        return 0;
    else if(size1>size2)
        return 1;
    else 
        return -1;
}

这段代码有什么问题?

_

编辑:错误:

First-chance exception at 0x77052865 (ntdll.dll) in cFILE.exe: 0xC0000008: An invalid handle was specified.

If there is a handler for this exception, the program may be safely continued.

最佳答案

鉴于:
1) OP“...不能改变它对通用性的需求。”
2) int cmpFILEd(void *aa,void *bb) 是一个比较函数

这看起来像是 qsort() 等格式错误的比较函数。

在那种情况下,传递的指针是 FILE *地址,正如@BLUEPIXY 所建议的那样,

int cmpFILEd(void *aa,void *bb){
  long size1, size2;  // Note use long here
  FILE *a = *((FILE**) aa);
  FILE *b = *((FILE**) bb);
  ...

关于按大小比较 C 中的 2 个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24588106/

相关文章:

c - 简单计算器的词法分析器和语法的意外行为

Java图像比较类-添加偏移量

ruby - 比较数组是否匹配字符串

c - 函数my_find_node返回第一个节点出现的地址

c - 如何验证网页是否存在

javascript - 是否可以检查函数是 javascript 函数还是开发人员定义的函数?

sql - 在 postgresql 函数中使用数组运算符

c++ - 如何为模板嵌套类类型的函数声明参数?

perl - 使用 Perl 或 Powershell,如何比较 2 个 CSV 文件并仅获取新行?

c - 在 C 中打印一个空的二维数组