Hàm nào trong các hàm sau thuộc các hàm nhập xuất không định dạng ?
1- printf();
2- scanf();
3- getchar();
4- putchar();
Đáp án đúng: B
Câu hỏi liên quan
Phát biểu đúng nhất về biến động là: Khi chạy chương trình, kích thước vùng biến, vùng nhớ và địa chỉ vùng nhớ có thể thay đổi.
Giải thích:
- Đáp án A không đúng vì biến động có thể phát sinh trước khi chương trình thực hiện (ví dụ, khi cấp phát bộ nhớ động).
- Đáp án B đúng vì đây là bản chất của biến động trong lập trình. Kích thước, vùng nhớ và địa chỉ của biến có thể thay đổi trong quá trình chương trình chạy, đặc biệt khi sử dụng cấp phát bộ nhớ động.
- Đáp án C đúng, tuy nhiên chưa đủ bao quát bằng đáp án B, nó chỉ nói về việc giải phóng bộ nhớ đã cấp phát.
- Vì đáp án B đúng và bao quát hơn cả nên D (tất cả các đáp án trên) không phải là đáp án đúng nhất.
Câu hỏi này kiểm tra kiến thức về các hàm đọc dữ liệu từ tệp nhị phân trong C.
- A. fscanf(f, \"%d\", x); Hàm
fscanf
được sử dụng để đọc dữ liệu từ một tệp đã được mở ở chế độ văn bản (text mode), không phải nhị phân. Nó đọc dữ liệu theo định dạng được chỉ định (trong trường hợp này là số nguyên) và lưu vào biến được trỏ bởi con trỏx
. Tuy nhiên, vìf
là con trỏ tệp nhị phân, sử dụngfscanf
là không phù hợp. - B. fread(&x, sizeof(int), 1, f); Hàm
fread
được sử dụng để đọc dữ liệu từ tệp nhị phân. Tham số đầu tiên là địa chỉ của biến để lưu dữ liệu đọc được (&x
), tham số thứ hai là kích thước của mỗi phần tử cần đọc (sizeof(int)
), tham số thứ ba là số lượng phần tử cần đọc (1
), và tham số cuối cùng là con trỏ tệp (f
). Đoạn mã này sẽ đọc một số nguyên từ tệp nhị phânf
và lưu vào biếnx
. Đây là phương pháp chính xác để đọc dữ liệu từ tệp nhị phân. - C. getw(f); Hàm
getw
cũng được sử dụng để đọc một số nguyên từ tệp, nhưng nó là một hàm cũ và không được khuyến khích sử dụng trong các chương trình hiện đại. Nó có thể không hoạt động đúng trên tất cả các hệ thống. - D. 2 và 3 đúng. Vì
getw
không được khuyến khích và có thể không tương thích, chỉ có phương án 2 đúng.
Vậy, đáp án đúng là B.
Để trả lời câu hỏi này, cần hiểu cách C xử lý các kí tự đặc biệt khi đọc file văn bản, đặc biệt là kí tự có mã 1A (EOF), OD (Carriage Return) và OA (Line Feed).
- Phương án A: Khi đọc kí tự có mã 1A (End-of-File) từ file văn bản, C thường hiểu đây là dấu hiệu kết thúc file. C sẽ không đọc thành kí tự có mã -1. Do đó, phương án A sai.
- Phương án B: Trong hệ điều hành Windows, kí tự xuống dòng thường được biểu diễn bằng cặp kí tự OD (Carriage Return) và OA (Line Feed). Khi đọc file văn bản ở chế độ text, C sẽ chuyển đổi cặp kí tự OD và OA thành một kí tự xuống dòng duy nhất (OA). Do đó, phương án B đúng.
- Phương án C: Như giải thích ở phương án B, C không bỏ qua kí tự OD mà chuyển đổi nó cùng với OA thành kí tự xuống dòng. Do đó, phương án C sai.
- Phương án D: Vì phương án A và C sai nên phương án D cũng sai.
Vậy đáp án đúng nhất là B.
Câu hỏi này kiểm tra kiến thức về cách thức C xử lý các kí tự đặc biệt khi ghi vào file văn bản, đặc biệt là các kí tự liên quan đến việc xuống dòng (carriage return - OD, line feed - OA) và kí tự EOF (end of file - 1A).
- Phương án A: Sai. Kí tự có mã 1A (EOF) khi ghi vào file văn bản thường được C xử lý như dấu hiệu kết thúc file, việc chuyển thành mã -1 là không chính xác.
- Phương án B: Sai. Khi ghi file văn bản trên các hệ điều hành khác nhau, cách xử lý kí tự xuống dòng có thể khác nhau. Trên Windows, một dòng mới thường được biểu diễn bằng cặp kí tự CR (OD) và LF (OA). Tuy nhiên, C có thể tự động chuyển đổi kí tự xuống dòng (ví dụ, \n) thành cặp OD và OA khi ghi vào file văn bản trên Windows, chứ không phải ghi cả hai kí tự OD và OA thành OA.
- Phương án C: Đúng. Trong một số trường hợp, đặc biệt trên các hệ thống không sử dụng kí tự OD (Carriage Return) cho việc xuống dòng, kí tự OD có thể bị bỏ qua khi ghi vào file văn bản.
Do đó, phương án C là đúng nhất.
Đoạn chương trình thực hiện việc đọc nội dung từ file "source" và ghi vào file "TARGET".
f1 = fopen("source", "rt")
: Mở file "source" ở chế độ đọc văn bản.f2 = fopen("TARGET", "wt")
: Mở file "TARGET" ở chế độ ghi văn bản. Nếu file "TARGET" chưa tồn tại, nó sẽ được tạo mới. Nếu file "TARGET" đã tồn tại, nội dung của nó sẽ bị ghi đè.while((c = fgetc(f1)) != EOF) fputc(c, f2)
: Vòng lặp đọc từng ký tự từ file "source" (sử dụngfgetc
) và ghi ký tự đó vào file "TARGET" (sử dụngfputc
). Vòng lặp kết thúc khi gặp ký tự EOF (End-of-File), tức là khi đã đọc hết file "source".
Vì mỗi ký tự đọc từ file "source" đều được ghi vào file "TARGET", nên sau khi đoạn chương trình này thực hiện xong, file "TARGET" sẽ có nội dung giống hệt file "source". Do đó, độ dài của hai file sẽ bằng nhau.
Các phương án khác không đúng vì:
- A: Sai. Độ dài file "source" không nhất thiết bé hơn độ dài file "TARGET".
- C: Sai. Độ dài file "source" không nhất thiết lớn hơn độ dài file "TARGET".
- D: Sai. Sự khác biệt về độ dài không phải lúc nào cũng là 1 byte.

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.