Nghiên cứu đoạn code sau:
FILE* f = fopen("FL.txt", "r");
int n = 7;
fprintf(f, "%d", n);
Hãy chọn câu đúng:
Đáp án đúng: A
Câu hỏi liên quan
Phân tích các đáp án:
- A. getch(); Hàm này dùng để đọc một ký tự từ bàn phím mà không hiển thị ký tự đó lên màn hình. Nó không liên quan đến việc đọc dữ liệu từ tệp.
- B. fscanf(); Hàm này là phiên bản "file scan formatted" của scanf(). Nó được sử dụng để đọc dữ liệu có định dạng từ một tệp. Đây là đáp án đúng.
- C. getc(); Hàm này dùng để đọc một ký tự từ một luồng (stream), thường là từ một tệp. Nó cũng được dùng để nhập dữ liệu từ tệp.
- D. scanf(); Hàm này dùng để đọc dữ liệu từ đầu vào chuẩn (thường là bàn phím). Nó không được dùng để đọc trực tiếp từ tệp (mặc dù có thể kết hợp với chuyển hướng luồng).
Kết luận:
Mặc dù `getc()` cũng được sử dụng để đọc dữ liệu từ tệp, `fscanf()` là đáp án chính xác hơn vì nó chuyên dùng để đọc dữ liệu có định dạng từ tệp, phù hợp với ngữ cảnh chung của câu hỏi hơn. Hàm `getc()` chỉ đọc từng ký tự đơn lẻ, còn `fscanf()` có thể đọc nhiều loại dữ liệu khác nhau theo định dạng.
Phân tích các phương án:
- A. putch();: Hàm
putch()
(hoặc tương tự như_putch()
trong một số trình biên dịch) thường được sử dụng để ghi một kí tự trực tiếp vào console (màn hình), không phải vào tệp. - B. puts();: Hàm
puts()
dùng để ghi một chuỗi kí tự vào một luồng đầu ra (thường là stdout). Hàm này tự động thêm một kí tự newline ('\n') vào cuối chuỗi. - C. fputs();: Hàm
fputs()
dùng để ghi một chuỗi kí tự vào một tệp đã mở. Nó không tự động thêm kí tự newline. - D. fputc();: Hàm
fputc()
được sử dụng để ghi một kí tự vào một tệp đã mở. Tham số đầu tiên là kí tự cần ghi, và tham số thứ hai là con trỏ tệp.
Kết luận:
Hàm fputc()
được thiết kế đặc biệt để ghi một kí tự vào tệp.
* `fseek()`: Hàm này dùng để di chuyển con trỏ tệp đến một vị trí cụ thể trong tệp, không nhất thiết phải là đầu tệp.
* `ftell()`: Hàm này trả về vị trí hiện tại của con trỏ tệp.
* `seek()`: Không phải là một hàm chuẩn trong thư viện C để làm việc với tệp. Có thể là một hàm tự định nghĩa hoặc một hàm thuộc thư viện khác.
Vì vậy, đáp án đúng là B.
Phân tích câu hỏi:
Câu hỏi kiểm tra kiến thức về con trỏ và struct trong C/C++. Cần xác định cách sử dụng con trỏ để trỏ đến các thành phần của struct và mảng struct.
Đánh giá các phương án:
- A. p=&t;
t
là một biến kiểustruct T
,&t
là địa chỉ của biếnt
.p
là một con trỏ kiểustruct T*
. Câu lệnh này gán địa chỉ củat
chop
, hoàn toàn hợp lệ. - B. p=&t.x;
t.x
là một thành viên (kiểuint
) của structt
,&t.x
là địa chỉ của thành viênx
. Tuy nhiên,p
là một con trỏ kiểustruct T*
, không phảiint*
. Do đó, câu lệnh này không hợp lệ vì kiểu dữ liệu không khớp. - C. p=&a[5];
a
là một mảng gồm 10 phần tử, mỗi phần tử có kiểustruct T
.a[5]
là phần tử thứ 6 của mảng (chỉ số bắt đầu từ 0), và nó có kiểustruct T
.&a[5]
là địa chỉ của phần tử thứ 6, và nó có kiểustruct T*
, phù hợp với kiểu củap
. Câu lệnh này hợp lệ. - D. p=&a;
a
là tên mảng, khi dùng trong biểu thức (ngoại trừ các trường hợp đặc biệt như toán tửsizeof
), nó thường được chuyển đổi thành con trỏ đến phần tử đầu tiên của mảng. Tuy nhiên,&a
sẽ lấy địa chỉ của toàn bộ mảnga
. Về mặt giá trị, địa chỉ này có thể giống với địa chỉ củaa[0]
, nhưng về mặt kiểu, nó là một con trỏ đến mảng 10 phần tử kiểustruct T
, tức làstruct T (*)[10]
, chứ không phảistruct T*
. Vì vậy, câu lệnh này không hợp lệ.
Kết luận:
Câu lệnh B không hợp lệ vì cố gắng gán địa chỉ của một biến kiểu int (t.x) cho một con trỏ kiểu struct T*.
Câu lệnh D không hợp lệ vì cố gắng gán địa chỉ của mảng (struct T (*)[10]) cho con trỏ struct T*.
Trong 2 câu B và D thì câu B sai tường minh hơn vì kiểu dữ liệu của vế phải không phù hợp với vế trái, do đó câu B được coi là đáp án đúng nhất.
Kiểu dữ liệu cấu trúc (struct) cho phép gom nhiều thành phần dữ liệu có kiểu dữ liệu khác nhau (ví dụ: số nguyên, số thực, chuỗi, ký tự...) thành một nhóm duy nhất, dưới một tên gọi chung. Mỗi thành phần trong cấu trúc được gọi là một trường (field). Ví dụ, một cấu trúc có thể chứa thông tin về một người, bao gồm tên (chuỗi), tuổi (số nguyên) và chiều cao (số thực).
Các lựa chọn khác không phù hợp vì:
- Mảng: Chỉ chứa các phần tử có cùng kiểu dữ liệu.
- Con trỏ: Lưu địa chỉ của một biến khác, không chứa nhiều thành phần dữ liệu khác kiểu.
- Tập tin: Đại diện cho một nguồn dữ liệu bên ngoài (ví dụ: một file trên ổ cứng), không phải là một kiểu dữ liệu cơ bản để chứa các thành phần dữ liệu khác nhau.

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.