01/10/2018, 15:14

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
Không biết lý do ở đâu vậy ạ

Kuroemon viết 17:21 ngày 01/10/2018

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

Lương Thế Hải viết 17:30 ngày 01/10/2018

Đâ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

Kiii viết 17:23 ngày 01/10/2018

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

Bài liên quan
0