1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <memory.h>
    4. #define KEY 0xFA
    5. char *filename = "data.dat";
    6. int main(int argc, char *argv[]) {
    7. FILE *fpr, *fpw;
    8. char ch, k = (char) KEY;
    9. //命令行参数有误
    10. if (argc != 3 || *argv[2] != '+' && *argv[2] != '-') {
    11. printf("Useage: execute_file filename+/-\n");
    12. exit(0);
    13. }
    14. fpr = fopen(argv[1], "rb");
    15. if (fpr == NULL) {
    16. printf("can not open file: %s", argv[1]);
    17. exit(0);
    18. }
    19. fpw = fopen(argv[1], "rb+");
    20. if (fpw == NULL) {
    21. printf("can not open file: %s", argv[1]);
    22. }
    23. while ((ch = fgetc(fpr)) != EOF) {
    24. //0xFA
    25. fputc(ch ^ k, fpw);
    26. k = (*argv[2] == '+') ? ch : ch ^ k;
    27. }
    28. fclose(fpr);
    29. fclose(fpw);
    30. return 0;
    31. }