Lỗi khi ghi và đọc file cùng lúc
Trước giờ em giải thuật thì chỉ có freopen
, bây giờ học đọc ghi file bằng mấy lệnh khác (fopen, fprintf, fgetc, …).
Cho em hỏi là em cần ghi dòng Hello World
vào file, xong dùng fgetc cùng vòng lặp để đọc và in ra từng kí tự (nói chung là in ra lại dòng Hello World file ra console)
Đây là code của em
FILE* file = NULL;
file = fopen("test.txt", "r+");
fputs("Hello World", file);
char word;
do{
word = fgetc(file);
std::cout << word;
}while(word != EOF);
fclose(file);
Thế nhưng em gặp chuyện là nếu em code như thế, thì nội dung file em xem được sẽ là Hello World
cùng một đống chữ NULL
phía sau
Và in ra Console thì toàn kí tự trắng (chắc là NULL
:v)
Nhưng khi em làm từng công việc, bỏ phần vòng lặp đi, chỉ ghi vào file thôi thì vẫn bình thường, sau đó bỏ phần ghi và thêm lại phần vòng lặp, thì vẫn in ra console là Hello World
.
Mọi người giải thích và giup em sửa với.
Gửi toàn bộ code lên Đạt debug thử
Code thì chỉ thêm main với mấy cái Include
Dạ đây là kết quả khi run
À, anh hiểu ý em muốn làm gì rồi. Trước hết em phải
rewind
tức đưa đầu đọc về vị trí đầu file.Tiếp theo đó là em phải đổi lại cái
do .. while
thànhwhile
để tránh đọc ký tựEOF