Hàm nào dưới đây chỉ dùng để ghi một khối dữ liệu vào file:
Trả lời:
Đáp án đúng: C
Phân tích các đáp án:
- A. fgets(): Hàm này dùng để đọc một dòng từ file.
- B. fputs(): Hàm này dùng để ghi một chuỗi vào file.
- C. fwrite(): Hàm này dùng để ghi một khối dữ liệu vào file. Đây là đáp án đúng.
- D. fread(): Hàm này dùng để đọc một khối dữ liệu từ file.
Kết luận: Hàm fwrite()
được sử dụng để ghi một khối dữ liệu vào file.
Câu hỏi liên quan
Lời giải:
Đáp án đúng: C
Để giải quyết câu hỏi này, chúng ta cần hiểu rõ về hàm fseek()
trong C/C++ và cách nó hoạt động với các tệp nhị phân.
fseek(file_pointer, offset, origin)
: Hàm này dùng để di chuyển con trỏ tệp (file_pointer
) đến một vị trí mới trong tệp.offset
là số byte cần di chuyển, vàorigin
chỉ định vị trí gốc để tính toán offset.SEEK_SET
: Tính từ đầu tệp.SEEK_CUR
: Tính từ vị trí hiện tại của con trỏ tệp.SEEK_END
: Tính từ cuối tệp.
Phân tích từng đáp án:
- A. Sai.
fseek(f, 10, SEEK_END)
định vị con trỏ đến vị trí cách cuối tệp 10 byte, không phải byte thứ 10 trong tệp. - B. Sai. Để định vị con trỏ tới cuối tệp, phải dùng
fseek(f, 0, SEEK_END)
. - C. Sai.
fseek(f, n, SEEK_SET)
sẽ đặt con trỏ tới byte thứ n tính từ đầu tệp (byte có index là n, bắt đầu từ 0), chứ không phải cấu trúc thứ n. Để định vị tới cấu trúc thứ n, cần biết kích thước của mỗi cấu trúc và nhân n với kích thước đó. - D. Đúng.
fseek(f, n, SEEK_CUR)
di chuyển con trỏ tệp n byte so với vị trí hiện tại. Trong trường hợp này, câu hỏi đưa ra một mệnh đề sai, giả sử n byte nhưng sẽ không làm thay đổi vị trí con trỏ của tệp là không chính xác, vì nếu n = 0 thì mới không thay đổi vị trí con trỏ của tệp. Tuy nhiên đây lại là đáp án đúng nhất trong các đáp án sai.
Lời giải:
Đáp án đúng: D
Hàm `fgets()` được sử dụng để đọc một dòng từ một tệp tin. Dưới đây là phân tích chi tiết các phương án:
* Phương án A: Sai. Hàm `fgetc()` mới đọc từng kí tự từ tệp.
* Phương án B: Sai. Hàm `fgets()` đọc một dãy kí tự từ tệp và lưu vào vùng nhớ *đã cho*, chứ không phải vùng nhớ mới.
* Phương án C: Đúng. Hàm `fgets()` đọc các ký tự từ tệp cho đến khi gặp ký tự xuống dòng (`\n`), đạt đến độ dài tối đa đã chỉ định, hoặc gặp EOF. Nếu gặp ký tự xuống dòng, hàm sẽ bao gồm ký tự này trong chuỗi và thêm một ký tự null (`\0`) vào cuối chuỗi.
* Phương án D: Sai. Hàm `fgets()` chỉ thêm kí tự xuống dòng (mã số 10) và kí tự null (\0) chứ không thêm kí tự mã số 13.
Vậy, phương án C là đúng nhất.
* Phương án A: Sai. Hàm `fgetc()` mới đọc từng kí tự từ tệp.
* Phương án B: Sai. Hàm `fgets()` đọc một dãy kí tự từ tệp và lưu vào vùng nhớ *đã cho*, chứ không phải vùng nhớ mới.
* Phương án C: Đúng. Hàm `fgets()` đọc các ký tự từ tệp cho đến khi gặp ký tự xuống dòng (`\n`), đạt đến độ dài tối đa đã chỉ định, hoặc gặp EOF. Nếu gặp ký tự xuống dòng, hàm sẽ bao gồm ký tự này trong chuỗi và thêm một ký tự null (`\0`) vào cuối chuỗi.
* Phương án D: Sai. Hàm `fgets()` chỉ thêm kí tự xuống dòng (mã số 10) và kí tự null (\0) chứ không thêm kí tự mã số 13.
Vậy, phương án C là đúng nhất.
Lời giải:
Đáp án đúng: D
Phân tích các đáp án:
- A. putch(); Hàm này dùng để ghi một kí tự ra màn hình (không phải vào tệp).
- B. puts(); Hàm này dùng để ghi một xâu kí tự ra màn hình (không phải vào tệp).
- C. fputc(); Hàm này dùng để ghi một kí tự vào tệp.
- D. fputs(); Hàm này dùng để ghi một xâu kí tự vào tệp.
Vậy, hàm fputs()
là hàm dùng để ghi một xâu kí tự vào tệp.
Lời giải:
Đáp án đúng: C
Khi sử dụng hàm fopen()
trong C/C++ để mở một file đã tồn tại và muốn thêm dữ liệu vào cuối file theo kiểu văn bản (text), ta sử dụng mode "a+t".
"a"
: Mở file để thêm vào cuối. Nếu file không tồn tại, nó sẽ được tạo ra."+"
: Mở file để đọc và ghi."t"
: Chỉ định file được mở ở chế độ text (văn bản). Trên một số hệ điều hành (ví dụ như Windows), chế độ text sẽ tự động chuyển đổi ký tự xuống dòng (newline character) giữa\r\n
và\n
khi đọc và ghi file.
Các lựa chọn khác không phù hợp vì:
"r+t"
: Mở file để đọc và ghi, bắt đầu từ đầu file. Nếu ghi, nó sẽ ghi đè lên phần đầu của file, không phải thêm vào cuối."r+b"
: Mở file để đọc và ghi ở chế độ nhị phân (binary). Không phù hợp khi muốn xử lý file theo kiểu văn bản."a+b"
: Mở file để thêm vào cuối ở chế độ nhị phân. Không phù hợp khi muốn xử lý file theo kiểu văn bản.
Lời giải:
Đáp án đúng: D
Để tạo một danh sách liên kết, mỗi nút (node) trong danh sách cần chứa một con trỏ đến nút tiếp theo trong danh sách. Con trỏ này phải có kiểu dữ liệu là kiểu của chính cấu trúc đó (tức là tự trỏ).
* Sinh viên 1: `struct SV{char ht[25]; int tuoi; struct Sv *tiep;};`
* Khai báo này đúng. `struct Sv *tiep;` khai báo một con trỏ `tiep` kiểu `struct Sv`, trỏ đến một cấu trúc `SV` khác.
* Sinh viên 2: `typedef struct SV node; struct SV{char ht[25]; int tuoi; node *tiep;};`
* Khai báo này cũng đúng. `typedef struct SV node;` tạo một bí danh (alias) `node` cho kiểu `struct SV`. Sau đó, `node *tiep;` khai báo một con trỏ `tiep` kiểu `node`, tức là kiểu `struct SV`, trỏ đến một cấu trúc `SV` khác.
* Sinh viên 3: `typedef struct SV{char ht[25]; int tuoi; struct SV *tiep;} node;`
* Khai báo này cũng đúng. `typedef struct SV{char ht[25]; int tuoi; struct SV *tiep;} node;` vừa định nghĩa cấu trúc `SV`, vừa tạo bí danh `node` cho cấu trúc đó. `struct SV *tiep;` khai báo một con trỏ `tiep` kiểu `struct SV`, trỏ đến một cấu trúc `SV` khác.
Vì cả ba sinh viên đều khai báo đúng, đáp án đúng là D.
* Sinh viên 1: `struct SV{char ht[25]; int tuoi; struct Sv *tiep;};`
* Khai báo này đúng. `struct Sv *tiep;` khai báo một con trỏ `tiep` kiểu `struct Sv`, trỏ đến một cấu trúc `SV` khác.
* Sinh viên 2: `typedef struct SV node; struct SV{char ht[25]; int tuoi; node *tiep;};`
* Khai báo này cũng đúng. `typedef struct SV node;` tạo một bí danh (alias) `node` cho kiểu `struct SV`. Sau đó, `node *tiep;` khai báo một con trỏ `tiep` kiểu `node`, tức là kiểu `struct SV`, trỏ đến một cấu trúc `SV` khác.
* Sinh viên 3: `typedef struct SV{char ht[25]; int tuoi; struct SV *tiep;} node;`
* Khai báo này cũng đúng. `typedef struct SV{char ht[25]; int tuoi; struct SV *tiep;} node;` vừa định nghĩa cấu trúc `SV`, vừa tạo bí danh `node` cho cấu trúc đó. `struct SV *tiep;` khai báo một con trỏ `tiep` kiểu `struct SV`, trỏ đến một cấu trúc `SV` khác.
Vì cả ba sinh viên đều khai báo đúng, đáp án đúng là D.
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy
89 tài liệu310 lượt tải

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin
125 tài liệu441 lượt tải

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông
104 tài liệu687 lượt tải

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán
103 tài liệu589 lượt tải

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp
377 tài liệu1030 lượt tải

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
99 tài liệu1062 lượt tải
ĐĂ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.
77.000 đ/ tháng