4.3 TRUY NHẬP TỆP TRỰC TIẾP
4.3.2 Truy nhập vị trí hiện tại của con trỏ tệp
Cú pháp truy nhập đến vị trí hiện thời của con trỏ tệp phụ thuộc vào kiểu biến tệp đang dùng là để
đọc hay ghi.
• Nếu biến tệp là kiểu mở tệp để đọc ifstream thì cú pháp là:
<Tên biến tệp>.tellg();
• Nếu biến tệp là kiểu mở tệp để ghi ofstream thì cú pháp là:
<Tên biến tệp>.tellp();
Chương trình 4.6a minh hoạ việc xác định vị trí hiện thời của con trỏ tệp sau một số thao tác đọc tệp trước đó. Chương trình 4.6a #include<stdlib.h> #include<iostream.h> #include<fstream.h> #include<conio.h>
const int length = 25; // Độ dài tối đa tên tệp tin void main(){
clrscr();
char fileName[length], output; cout << “Ten tep tin: ”;
/* Mở tệp tin */
ifstream fileIn(fileName, ios::in); // Khai báo và mở tệp tin if(!fileIn){ // Không mở được tệp
cout << “Khong the mo duoc tep tin ” << fileName << endl; exit(1);
}
/* Đọc dữ liệu từ tệp tin ra màn hình
* Ghi vi trí con trỏ tệp ra màn hình cứ sau 5 lần đọc kí tự */ int index = 0;
while(fileIn){
fileIn >> output; // Đọc kí tự từ tệp tin cout << output; // Ghi kí tự ra màn hình if(index % 5 == 0) // Ghi ra vị trí con trỏ tệp
cout<< endl << “Vi tri con tro tep: ” << fileIn.tellg() << endl; index ++;
}
cout << endl; // Xuống dịng trên màn hình /* Đóng tệp tin */
fileIn.close(); // Đóng tệp tin return;
}
Chương trình 4.6b minh hoạ việc xác định vị trí hiện thời của con trỏ tệp sau một số thao tác ghi vào tệp trước đó. Chương trình 4.6b #include<stdlib.h> #include<iostream.h> #include<fstream.h> #include<conio.h>
const int length = 25; // Độ dài tối đa tên tệp tin void main(){
clrscr();
char fileName[length], input; cout << “Ten tep tin: ”;
/* Mở tệp tin */
ofstream fileOut(fileName, ios::out);// Khai báo và mở tệp tin if(!fileOut){ // Không mở được tệp
cout << “Khong the tao duoc tep tin ” << fileName << endl; exit(1);
}
/* Ghi dữ liệu vào tệp tin
* Hiện ra màn hình vị trí con trỏ tệp sau khi ghi đuọc 5 kí tự*/ int index = 0;
do{
cin >> input; // Đọc kí tự từ bàn phím fileOut << input << ‘ ‘; // Ghi kí tự vào tệp tin
if(index%5 == 0) // Hiển thị vị trí con trỏ tệp cout << ”Vi tri con tro tep: ”
<< fileOut.tellp() << endl; index++;
}while((input != ‘e’)&&(fileOut));
fileOut << endl; // Xuống dòng cuối tệp tin /* Đóng tệp tin */
fileOut.close(); // Đóng tệp tin return;
}