25 câu hỏi
Hàm nào dưới đây chỉ dùng để đọc 1 khối dữ liệu từ tệp:
fgets();
fputs();
fwrite();
fread();
Hàm nào dưới đây chỉ dùng để ghi một khối dữ liệu vào file:
fgets();
fputs();
fwrite();
fread();
Giả sử tệp DATA chứa 5 byte: “70, 26, 13, 10, 44”. Cho đoạn lệnh. Hãy cho biết kết quả của đoạn chương trình trên: FILE * f; char ch; f = fopen(“DATA”, ”r”); while (!feof(f)) { ch = fgetc(f); printf(“ % c”, ch); }; fclose(f);
“70, 26, 13, 13, 10, 44”
“70, 26, 13, 10, 44”
“70, 26, 10, 44”
Đoạn lệnh có lỗi
Cho tệp nhị phân DATA chứa dãy các cấu trúc liền nhau L struct T{…} x;và f là con trỏ tệp đến DATA. Chọn câu đúng nhất trong các câu sau:
Lệnh fseek(f,10,SEEK_END) định vị con trỏ tệp đến byte thứ 10 trong tệp.
Đoạn lệnh fseek(f, 10, SEEK_END); định vị con trỏ tới cuối tệp.
Giả sử tệp có n cấu trúc, lệnh fseek(f, n, SEEK_SET) sẽ đặt con trỏ tới cấu trúc cuối cùng của tệp.
Giả sử tệp có n cấu trúc, lệnh fseek(f, n, SEEK_CUR); sẽ không làm thay đổi vị trí con trỏ của tệp.
f là con trỏ trỏ đến tệp nhị phân DATA chứa không quá 100 bản ghi( kiểu cấu trúc) liền nhau. Cho khai báo. Đoạn chương trình nào sau đây đọc toàn bộ các bảng ghi trong DATA vào x: struct T { …}; struct T x[100]; int i = 0, n = 0;
fread(x+i++, sizeof(T), 1, f ); while (!feof(f)) fread(x+i++, sizeof(T), 1, f); fclose(f);
fseek(f,0,SEEK_END); n=ftell(f)/sizeof(T); fseek(f,0,SEEK_SET); fread(x, sizeof(T), n, f); fclose(f);
A và B đúng
A và B sai
Phát biểu nào sau đây là đúng khi nói về chế độ truyền: Trong chế độ nhị phân, các byte được sử lí khác với giá trị trên thiết bị ngoại vi và có sự thực hiện chuyển đổi. Trong chế độ nhị phân, các kí tự được tổ chức thành từng dòng, được kết thúc bằng kí tự xuống dòng và có sự chuyển đổi. Trong chế độ văn bản, các kí tự được tổ chức thành từng dòng, mỗi dòng kết thúc bằng kí tự xuống dòng, có sự chuyển đổi của một số kí tự theo yêu cầu của môi trường. Trong chế độ nhị phân, các byte được sử lí đúng như giá trị trên thiết bị ngoại vi và không có sự thực hiện chuyển đổi nào.
1 và 2
1 và 3
2 và 3
2 và 4
Phát biểu nào sau là đúng khi nói về hàm fgets():
Hàm đọc 1 kí tự từ tệp, nếu thành công hàm cho mã đọc được. Nếu gặp cuối tệp hoặc có lỗi, hàm cho kí tự EOF.
Hàm đọc 1 dãy kí tự từ tệp để lưu vào vùng nhớ mới.
Khi dùng hàm nếu gặp kí tự xuống dòng thì kí tự mã số 10 sẽ được thêm vào cuối xâu được đọc.
Khi dùng hàm, nếu gặp kí tự xuống dòng, thì kí tự mã số 10 và 13 sẽ được thêm vào cuối xâu được đọc.
Hàm nào dưới đây chỉ dùng để ghi 1 xâu kí tự vào tệp:
putch();
puts();
fputc();
fputs();
Phát biểu đúng nhất về mẫu lệnh( f là con trỏ tệp): while ((ch = fgetc(f)) != EOF)…
Chọn 1 phần tử và kiểm tra xem có phải là EOF hay không.
Đọ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.
Ghi một phần tử và kiểm tra xem có phải là EOF hay không.
Đọ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.
Phát biểu nào đúng khi nói về câu lệnh fflush(FILE *f):
Hàm làm sạch vùng đệm của tệp f, nếu thành công cho giá trị số tệp đang mở, trái lại, trả về EOF.
Hàm làm sạch giá trị vùng đệm của tệp f, nếu thành công hàm cho giá trị EOF, trái lại, hàm trả vể 0.
Hàm làm sạch vùng đệm của tệp f, nếu thành công trả về 0, trái lại, trả về EOF.
Hàm xóa bộ nhớ đệm của bàn phím.
Hàm nào dưới đây chỉ dùng để chuyển con trỏ về vị trí đầu tệp:
fseek();
rewind();
ftell();
seek();
Đấu hiệu nào là đúng khi sử dụng hàm fread();
int fread( void *ptr, int size, FILE *f, int n);
int fread( FILE *f, void *ptr, int size, int n);
int fread( int size, void *ptr, int n, FILE *f);
int fread( void *ptr, int size, int n, FILE *f);
Dấu hiệu nào là đúng khi sử dụng hàm fputs();
int puts(const char *s, FILE *f);
int puts( const char *s);
int puts(FILE *f, const char *s);
int puts(FILE *f);
Dấu hiệu nào là đúng khi sử dụng hàm fopen() để mở một file đã tồn tại đọc theo kiểu nhị phân:
f=fopen(“du_lieu”,”r”);
f=fopen(“du_lieu”,”r+b”);
f=fopen(“du_lieu”,”a+t”);
f=fopen(“du_lieu”,”a+b”);
Hàm nào trả lại kích thước của một tệp được mở:
long filelength(int the_file);
double filelength(int the_file);
int filelength(int the_file);
Không có đáp án nào đúng.
Câu lệnh sau có ý nghĩa gì: FILE * fopen(tep1, ”ab”);
Mở tệp nhị phân để ghi.
Mở tệp nhị phân đã có và ghi thêm dữ liệu nối tiếp vào tệp này.
Mở tệp nhị phân để ghi mới.
Mở tệp nhị phân để đọc.
Hàm nào có thể thay đổi kích thước của tệp đang mở:
double chsize(int handle, long size);
long chsize(int handle, long size);
int chsize(int handle, long size);
Tất cả các đáp án trên.
Trong chế độ văn bản, dấu hiệu kết thúc tệp là:
EOF
NULL
\n
Ctrl_Z
Câu lệnh sau có ý nghĩa gì? FILE * fopen(tep1, ”r + ”);
Mở tệp văn bản cho phép ghi.
Mở tệp văn bản cho phép đọc.
Mở tệp văn bản cho phép cả đọc cả ghi.
Mở tệp văn bản đã tồn tại để đọc.
Câu lệnh sau có ý nghĩa gì? int open(tep1, O_TRUNC);
Mở tệp nhị phân để ghi.
Xóa nội dung của tệp.
Mở tệp văn bản để đọc và ghi.
Tất cả các đáp án trên.
Có thể truy cập thành phần của cấu trúc thông qua con trỏ như( với p là con trỏ cấu trúc, a là thành phần cấu trúc):
(*p).a;
*p->a;
A và B đều đúng
A và B đều sai
Cho khai báo. Câu lệnh nào không hợp lệ? struct T { int x; float y; } t, * p, a[10];
p=&t;
p=&t.x;
p=&a[5];
p=&a;
Cho các khai báo sau. Hãy chọn Câu đúng nhất: struct ngay { int ng, th, n; } vaotruong, ratruong; typedef struct sinhvien { char hoten; ngay ngaysinh; };
Không được phép gán: vaotruong = ratruong;
“sinhvien” là tên cấu trúc, “vaotruong”, “ratruong” là tên biến cấu trúc.
Có thể viết “vaotruong.ng”, “ratruong.th”, “sinhvien.vaotruong.n” để truy xuất đến các thành phần tương ứng.
A, B, C đều đúng
Trong các khởi tạo giá trị cho các cấu trúc sau, hãy chọn câu đúng: struct S1 { int ngay, thang, nam; }; S1 = (2, 1, 3); struct S2 { char hoten[10]; struct S1 ngaysinh; }; S2 = { “ Ly Ly”, { 4, 5, 6 } };
S1 đúng
S2 đúng
S1 và S2 đều đúng
S1 và S2 đều sai
Đối với kiểu có cấu trúc, cách gán nào sau đây là không được phép:
Gán biến cho nhau.
Gán hai phần tử mảng( kiểu cấu trúc) cho nhau.
Gán một phần tử mảng( kiểu cấu trúc) cho một biến hoặc ngược lại.
Gán hai mảng có cấu trúc có cùng số phần tử cho nhau.
