30/09/2018, 18:14
Hỏi về dấu nháy và FILE trong C
Ví dụ như em đang có file test.txt như thế này:
10
200
5000
Em muốn thay đổi số 200 thành số khác nhưng không biết cách nào, em để chế độ “r+”, cho dấu nháy tới dòng đó rồi nhưng vẫn không xử lý được , bí quá em lên đây hỏi các anh giúp dùm, thanks!
edit ở #3
Bài liên quan
chưa học về phần này bao giờ nhưng mục đích bài toán là chỉ cần đổi thành số khác là đc hay phải làm theo thuật toán
Chỉ cần đổi số là được bạn nhưng đây là thao tác với File nên mình chẳng biết làm cách nào, vd như:
Ví dụ như mình thêm biến int i=300, muốn thay đổi con số 200 thành 300 trong file test như sau:
–>
thì phải làm sao
Dùng
fseek(file, offset, origin)
http://www.cplusplus.com/reference/cstdio/fseek/
Muốn seek tới 1 dòng tính từ đầu file thì dùng
fseek(file,n*x+2,SEEK_SET)
Với n là số dòng cần trỏ tới, bắt đầu từ 0, x là kí tự trên dòng n-1. +2 là số kí tự ẩn, cụ thể ở đây là
\r\n
hay\n\r
nếu bạn xài Window và nhập file bằng tay, nhấn phím enter để xuống hàng)(Cụ thể hơn thì x = số byte của dòng đó đó :P, mà char chỉ lưu bằng 1 byte nên coi như là số ký tự )
Còn nếu muốn seek tới 1 dòng tính từ con trỏ hiện hành thì thay SEEK_SET bằng SEEK_CUR;
Như ví dụ trên thì
fseek(tientk,1*2+2,SEEK_SET);
thì nó sẽ trỏ tới vị trí như thế này|200
Lưu ý là nó sẽ ghi theo cơ chế ghi đè, tức là nếu bạn ghi 3000
thì file out của bạn sẽ thành
Do số 0 đã ghi đè kí tự xuống dòng.
cảm ơn bạn, để mai thử test lại, đi ngủ đã
mình không học thuật toán nên không biết phần này, nhưng đổi thì có thể dùng các hàm liên quan đến file trong C để lấy ra r sửa và lưu lại, mình chỉ biết cách làm này thôi :3