Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Về việc chạy 2 hàm tác động cùng 1 file

  1. #1
    Ngày gia nhập
    02 2015
    Bài viết
    1

    Mặc định Về việc chạy 2 hàm tác động cùng 1 file

    Mình có làm 1 bài về giải mã và mã hóa nội dung 1 file, nhưng không hiểu sao code nó không chạy đủ 2 function, mình xóa bớt 1 trong 2 đoạn code gọi lại function trong main thì cái kia vẫn chạy được. Mong mọi người giải thích hộ mình.
    Code:
    #include <stdio.h>
    
    char lower[] = "abcdefghijklmnopqrstuvwxyz";
    char upper[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    
    void Encryption(FILE *fin, FILE *fout, int shift){
      int i,c;
      while ((c=fgetc(fin)) != EOF){
        for(i = 0; i < 26; i++){
          if(upper[i] == c && (i+shift)<26) fputc(upper[i+shift], fout);
          else if(lower[i] == c && (i+shift)<26) fputc(lower[i+shift], fout);
          else if(upper[i] == c && (i+shift)>25)  fputc(upper[i-26+shift], fout);
          else if(lower[i] == c && (i+shift)>25)  fputc(lower[i-26+shift], fout);
          else if(c == 32){
    	fputc(c,fout);
    	break;
          }
        }
      }
    }
    
    void Decryption(FILE *in, FILE *out, int shift){
      int i,d;
      while ((d=fgetc(in)) != EOF){
        for(i = 0; i < 26; i++){
          if(upper[i] == d && (i - shift) > -1) fputc(upper[i-shift], out);
          else if(lower[i] == d && (i-shift) > -1) fputc(lower[i-shift], out);
          else if(upper[i] == d && (i-shift) < 0)  fputc(upper[i+26-shift], out);
          else if(lower[i] == d && (i-shift) < 0)  fputc(lower[i+26-shift], out);
          else if(d == 32){
    	fputc(d,out);
    	break;
          }
        }
      } 
    }
    
    int main(){
      FILE *fin, *fout, fout2;
      char filename[20];
      int  shift, c;
      char encrypt[] = "mahoa.txt";
      char decrypt[] = "giaima.txt";
      
      printf("Enter file's name ");
      scanf("%s",filename);
      printf("Enter the deviations ");
      scanf("%d",&shift);
      fin =fopen(filename,"a+");
      if(fin == NULL){
        printf("The file is not exist\n");
      } else {
    
       //encryption
        fout = fopen(encrypt,"w+");
        Encryption(fin, fout, shift);
        fclose(fout);
        fout = fopen(encrypt,"r");
        fprintf(fin,"/n============================Encryption==================\n");
        while ((c=fgetc(fout)) != EOF) fputc(c, fin);
        printf("Encryption is successfully!\n");
        
        //decryption
        fout2 = fopen(decrypt,"w+");
        Decryption(fin, fout2, shift);
        fclose(fout2);
        fout2 = fopen(decrypt,"r");    
        fprintf(fin,"\n=============================Decryption=================\n");
        while ((c=fgetc(fout2)) != EOF) fputc(c, fin);
        printf("Decryption is successfully!\n");
    
    
        fclose(fin);
        fclose(fout);   
        fclose(fout2);
      }
      return 0;
    Còn đây là file đính kèm mình sử dụng: alpha.txt
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    06 2015
    Bài viết
    2

    Hi bạn!

    Có 2 lỗi bạn gặp phải ở đây, dẫn đến error khi compile:

    1. Khi bạn khai báo hàm main, bạn cần sử dụng "}" để kết thúc hàm main nhé.

    Cụ thể:
    ...
    return 0;
    }

    2. Lỗi sai thứ 2 đó là:
    Khi bạn làm việc với FILE thông qua hàm fopen(), giá trị trả về của hàm fopen() là 1 con trỏ,
    lấy ví dụ trong code của bạn, có câu lệnh như sau:

    fout2 = fopen(decrypt,"w+");
    kiểu fout2 mà C compiler mong muốn đó là 1 con trỏ kiểu FILE.

    Trong khi đó, mình nhìn thấy bạn khai báo ở trên là:
    FILE *fin, *fout, fout2;


    đây chính là nguyên nhân gây ra lỗi.
    Để sửa lỗi:

    FILE *fin, *fout, *fout2;
    Chúc bạn thành công!
    Thân mến.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn