Lỗi Trôi lệnh khi nhập xuất xâu và số bằng File trong C.


•  Khi nhập/xuất từ file: Số nguyên Xâu tự.

Cần xử dụng các Hàm:
fscanf ( ) ; để đọc số nguyên từ file,
fgets ( ) ; để đọc chuỗi tự từ file
Tuy nhiên, Giống như trong nhập xuất từ bàn phím, với một xâu số liên tiếp, Hiện tượng trôi lệnh xảy ra, yêu cầu phải khắc phục.

với nhập xuất từ bàn phím, ta sử dụng 
    fflush (stdin); để khắc phục tình trạng trên. Tuy nhiên, với nhập/xuất bằng File, thì không thể làm được. Bởi vậy cần dùng 1 thủ thuật mới.


Lấy một ví dụ để dễ dàng hình dung:

                                   ví dụ với file nhập thông tin của 1 sinh viên.


Với ví dụ trên, có thể nhiều người sẽ code như sau:






  Kết quả khi chạy code cho thấy: Xâu MaSV không có giá trị, Tên sinh viên thì lại là Mã sinh viên
                                              kết quả chạy code
                                       
 


Nguyên nhân của hiện tượng này như sau:

khi mới bắt đầu con trỏ đọc/ghi file ở vị trí 0, chuẩn bị cho yêu cầu.





khi có yêu cầu từ mã lệnh, con trỏ lùi lại một kí tự cho đến khi gặp dấu trắng hoặc kí tự "\0" đọc kí tự phía trước nó ( số 4 ). Đồng thời kết thúc câu lệnh.











Và lúc này dòng lệnh tiếp theo được thực hiện. tuy nhiên gặp kí tự "\0" nó kết thúc câu lệnh mà thông tin thì chưa được nhập.




Dòng Lệnh tiêp theo, xâu: TenSV lúc này nhập vào thông tin của Mã sinh viên.



Chính bởi vậy, cần phải thêm 1 lệnh nhập Mã sinh viên để trình tự nhập được chính xác.





Mọi thắc mắc xin để lại bình luận bên dưới.



Comments

Post a Comment