Xuất hiện ký tự thừa khi ghi file trong C

#include <stdio.h>

void Copy(FILE *File01, FILE *File02)
{
    char c;
    do {
        c = fgetc(File02);
        fputc(c, File01);
    } while (c != EOF);
}

void Read(const char *Path)
{
    FILE *File;

    File = fopen(Path, "r");

    char c;

    do {
        c = fgetc(File);
        printf("%c", c);
    } while (c != EOF);

    fclose(File);
}

int main()
{
    const char *Path01 = "E:/C/Trash/text.txt";
    const char *Path02 = "E:/C/Trash/test.c";

    FILE *File01, *File02;

    File01 = fopen(Path01, "w");
    File02 = fopen(Path02, "r");

    Copy(File01, File02);

    fclose(File01);
    fclose(File02);

    Read(Path01);

    return 0;
}

Em có đoạn code như sau, cụ thể là sao chép nội dung từ file02 sang file01
Em chạy thì oke, nội dung được copy đầy đủ. Tuy nhiên thì nó lại ghi thêm 1 ký tự lạ ở cuối file ÿ

Tuy nhiên khi em viết hàm read để đọc thì nó lại in đúng :frowning:
Không biết lý do ở đâu vậy ạ :frowning:

anh tìm kết quả ở đây nha https://stackoverflow.com/questions/34082182/extra-character-appearing-while-copying-a-dat-file-using-c-code

3 Likes

Đây là ký tự EOF.
Bạn chỉ cần cho đọc ký tự trong file, kiểm tra xem nó có phải EOF hay không nếu đúng thì không ghi ký tự đó là xong

2 Likes

Cám ơn 2 bạn, mình đã tìm ra vấn đề rồi lỗi trong code của mình rồi <3

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?