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 ạ
Bài liên quan
anh tìm kết quả ở đây nha https://stackoverflow.com/questions/34082182/extra-character-appearing-while-copying-a-dat-file-using-c-code
Đâ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
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