• c语言 判断两个文件是否相同


    使用strcmp比较:

    1. #include
    2. #include
    3. int Compare(const char * file1, const char* file2)
    4. {
    5. FILE* f1, * f2;
    6. int size1, size2;
    7. unsigned char buffer1[1024], buffer2[1024];
    8. f1 = fopen(file1, "rb+");
    9. f2 = fopen(file2, "rb+");
    10. size1 = fread(buffer1, 1, 1024, f1);
    11. size2 = fread(buffer2, 1, 1024, f2);
    12. printf("(%d)\n", size1);
    13. printf("(%d)\n", size1);
    14. printf("%s\n", buffer1);
    15. printf("%s\n", buffer2);
    16. if (strncmp(buffer1, buffer2, size1) == 0)
    17. {
    18. return 1;
    19. }
    20. fclose(f1);
    21. fclose(f2);
    22. return 0;
    23. }
    24. int main(int argc, char* argv[])
    25. {
    26. if (Compare("1.txt", "2.txt"))
    27. {
    28. printf("文件内容相同!\n");
    29. }
    30. else
    31. {
    32. printf("文件内容不相同!\n");
    33. }
    34. return 0;
    35. }

    通过字节比较:

    1. #include
    2. int Compare(const char * file1, const char* file2)
    3. {
    4. FILE* f1, * f2;
    5. int size1, size2;
    6. unsigned char buffer1[1024], buffer2[1024];
    7. f1 = fopen(file1, "rb+");
    8. f2 = fopen(file2, "rb+");
    9. int isTheSame = 0;
    10. if (!f1)
    11. goto end;
    12. if (!f2)
    13. goto end;
    14. while (1)
    15. {
    16. size1 = fread(buffer1, 1, 1024, f1);
    17. printf("(%s)\n", buffer1);
    18. size2 = fread(buffer2, 1, 1024, f2);
    19. if (size1 != size2)
    20. {
    21. goto end;
    22. }
    23. if (size1 < 1)
    24. break;
    25. for (int i = 0; i < size1; i++)
    26. {
    27. if (buffer1[i] != buffer2[i])
    28. {
    29. goto end;
    30. }
    31. }
    32. }
    33. isTheSame = 1;
    34. end:
    35. if (f1)
    36. fclose(f1);
    37. if (f2)
    38. fclose(f2);
    39. return isTheSame;
    40. }
    41. int main(int argc, char* argv[])
    42. {
    43. if (Compare("1.txt", "2.txt"))
    44. {
    45. printf("文件内容相同!\n");
    46. }
    47. else
    48. {
    49. printf("文件内容不相同!\n");
    50. }
    51. return 0;
    52. }

  • 相关阅读:
    java--02
    如何开发你的第一个Flutter App?
    数字IC手撕代码-XX公司笔试真题(串并转换控制)
    中英文说明书丨CalBioreagents艾美捷肠病毒单克隆抗体
    Flutter 3.16 发布,快来看有什么更新吧
    Electron自动化测试技术选型调研
    用c++补全二维数组问题代码
    mysql—MHA原理与实现
    linux base64编码、解码
    sentinel与nacos持久化
  • 原文地址:https://blog.csdn.net/qq_36662437/article/details/134088054