Đáp án đúng: C
Để ghi một xâu kí tự vào tệp trong ngôn ngữ C, ta sử dụng hàm fputs()
. Hàm này nhận hai tham số: xâu kí tự cần ghi và con trỏ tệp.
fputc()
dùng để ghi một kí tự vào tệp.putch()
dùng để ghi một kí tự ra màn hình console, không phải vào tệp.puts()
dùng để ghi một xâu kí tự ra màn hình console, thêm một kí tự xuống dòng vào cuối, chứ không phải vào tệp.
Vậy, đáp án đúng là C.
Câu hỏi liên quan
Đoạn chương trình đọc từng byte từ tệp "DATA" và in ra màn hình. Hàm fgetc(f)
đọc một ký tự (byte) từ tệp được liên kết với con trỏ f
. Vòng lặp while(!feof(f))
tiếp tục cho đến khi hàm feof(f)
trả về giá trị khác 0, nghĩa là đã đạt đến cuối tệp.
Trong tệp DATA, có 5 byte: 70, 26, 13, 10, 44. Chương trình sẽ đọc và in ra từng byte này. Các byte này được in ra dưới dạng ký tự. Do đó, kết quả sẽ là chuỗi các ký tự tương ứng với các giá trị byte này.
Vì vậy, đáp án đúng là "70,26,13,10,44".
Câu hỏi yêu cầu tìm đoạn chương trình đúng để đọc toàn bộ các bản ghi từ một tệp nhị phân vào một mảng cấu trúc. Cần xem xét cách đọc dữ liệu nhị phân, cách kiểm tra điều kiện kết thúc tệp và cách di chuyển con trỏ tệp.
Đánh giá các phương án:
* Phương án A: Sử dụng `fread` để đọc từng bản ghi và `feof` để kiểm tra điều kiện kết thúc tệp. Tuy nhiên, việc gọi `fread` trước vòng `while` có thể dẫn đến đọc trùng bản ghi cuối cùng nếu `feof(f)` trả về true ngay từ lần đầu. Sau đó, `i++` được gọi ngay sau `x+i++` dễ gây khó hiểu, có thể dẫn đến lỗi logic.
* Phương án B: Sử dụng `fseek` và `ftell` để xác định số lượng bản ghi trong tệp, sau đó sử dụng `fread` để đọc toàn bộ dữ liệu vào mảng. Cách này hiệu quả và chính xác.
Kết luận:
Phương án B là phương án đúng nhất vì nó xác định chính xác số lượng bản ghi trong tệp và đọc toàn bộ dữ liệu vào mảng một cách hiệu quả.
Giải thích chi tiết:
* `fseek(f, 0, SEEK_END);`: Di chuyển con trỏ tệp đến cuối tệp.
* `n = ftell(f) / sizeof(T);`: Tính số lượng bản ghi bằng cách chia kích thước tệp cho kích thước của một bản ghi.
* `fseek(f, 0, SEEK_SET);`: Di chuyển con trỏ tệp trở lại đầu tệp.
* `fread(x, sizeof(T), n, f);`: Đọc `n` bản ghi từ tệp vào mảng `x`.
* `fclose(f);`: Đóng tệp.
Phương án A không tối ưu vì có thể đọc trùng bản ghi cuối cùng và cách dùng `i++` không rõ ràng, làm tăng độ phức tạp.
* A. Chọn 1 phần tử và kiểm tra xem có phải là EOF hay không. - Mô tả này không chính xác vì vòng lặp đọc *từng* phần tử cho đến khi gặp EOF.
* B. Đọc các phần tử của tệp chừng nào kí tự đó chưa phải là kí tự xuống dòng. - Mô tả này không chính xác vì vòng lặp dừng khi gặp EOF, không phải ký tự xuống dòng.
* C. Ghi một phần tử và kiểm tra xem có phải là EOF hay không. - Mô tả này không chính xác vì `fgetc()` dùng để *đọc* chứ không phải *ghi*.
* D. Đọc các phần tử của tệp chừng nào kí tự đó chưa phải là kí tự kết thúc. - "Kí tự kết thúc" ở đây ám chỉ EOF (End-Of-File). Mô tả này đúng, tuy nhiên đáp án D diễn đạt rõ ràng hơn.
Do đó, đáp án chính xác nhất là D.
Khi sử dụng hàm fopen()
trong C để mở một file đã tồn tại để đọc ở chế độ nhị phân (binary mode), ta cần sử dụng chuỗi "rb"
làm tham số thứ hai. Tham số này chỉ định rằng file sẽ được mở để đọc (r
) ở chế độ nhị phân (b
). Các lựa chọn khác không phù hợp vì:
"r"
: Mở file để đọc ở chế độ văn bản (text mode), không phải nhị phân."w"
: Mở file để ghi. Nếu file đã tồn tại, nội dung cũ sẽ bị xóa."at"
: Mở file để ghi tiếp vào cuối file ở chế độ văn bản.
Hàm chsize
được sử dụng để thay đổi kích thước của một tệp đã mở. Trong C/C++, hàm này thường có nguyên mẫu (prototype) như sau:
int chsize(int handle, long size);
Trong đó:
handle
là số mô tả tệp (file handle) của tệp đã mở.size
là kích thước mới của tệp, tính bằng byte.
Hàm trả về 0 nếu thành công, và trả về -1 nếu có lỗi.
Vậy đáp án C là đáp án đúng.

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.