01/10/2018, 14:42
Hỏi về thuật toán chuyển số từ Binary sang Hexa và Decimal sang Hexa trong file trên C
Chào mọi người. Mình đang học C. Và đang rối ở phần này ạ.
File input có 2 dòng ạ.
1 dòng gồm số binary và khoảng cách rồi đến số 2 để biểu thị hệ cơ số.
Ở dưới cũng vậy nhưng là Hexa và số 16
Em đang rối không biết làm sao để lấy từng dòng và lấy từng khúc(trước khoảng trắng mỗi dòng) để chuyển đổi ạ
Bài liên quan
Đây chỉ là định dạng thôi chứ vẫn chưa có đề bài, hay là bạn thật sự muốn làm gì với file đó.
Là đề cho mình vầy.
File input.txt
00011110 2
0x1F 16
File output.txt
30
31
Hàm ở đây nhé:
stackoverflow.com
Using atoi() in C to parse character array with binary values
Thuật toán parse thì bạn tự viết cho lẹ
Gợi ý:
Đọc theo dòng dùng
while EOF
, sau đó tìmchar
space là được.Anh ơi em vẫn chưa rõ lắm @@
VD như giờ em có cái file input
00011110 2
0x1F 16
Em muốn đọc từng cái thì làm sao nhỉ?
Như kiểu xài fscanf để đọc hết dòng 0001110 và lưu vào 1 biến mảng a. Rồi sau đó lại đọc cái 2 lưu vào 1 biến nào đó kiểu int.
Rồi lại xuống dòng đọc cái 0x1F lưu riêng 1 mảng rồi lại đọc 16 riêng vào một biến khác ấy? :(( Làm sao đc nhỉ?
Em ko rõ trên C lắm… Google người ta có chĩ fscanf là đọc trên file tới dấu cách.
Còn fgets thì đọc tới khi có \n hoặc tới dòng mới á?
Bạn đọc bằng cái nào cũng được.
Trường hợp này file đã có cấu trúc, dùng
fscanf
đọc%s %d
cho vàochar[8]
và& int
là được.Cho cái dòng đầu rồi còn cái dòng dưới thì làm sao a nhỉ @@?
fscanf
Bạn kiểm tra xem đọc tới EOF là được.
while(eof) rồi đọc à bác? Hơi gà mờ vụ file trong C cho lắm ^^
Hãy chú ý là phần kết thúc là EOF hay là null, vì có những trường hợp code mình đọc EOF thì lặp vô hạn nhưng đọc NULL thì chạy đúng
Nếu file input của bạn có 2 dòng thì bạn cứ đọc như bình thường thôi, không cần lôi đọc đến hết (EOF/NULL) vào làm gì cho mệt xác.
Nếu đọc đến hết: