1. Trang chủ
  2. » Công Nghệ Thông Tin

THAO TÁC VỚI TẬP TIN TRONG C++

7 774 3

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 486,38 KB

Nội dung

THAO TÁC VỚI TẬP TIN TRONG C++ tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các lĩnh v...

Trang 1

Trường Đại học Khoa Học Tự Nhiên Khoa Công Nghệ Thông Tin

Hướng dẫn

THAO TÁC VỚI TẬP TIN TRONG C++

Tháng 9/2011

Trang 2

Khoa CNTT | ĐH KHTN TP HCM Trang 2

1 Phân loại

Tập tin là hình thức lưu trữ phổ biến trên bộ nhớ phụ, gồm 2 loại:

 Tập tin văn bản: là tập tin chỉ lưu trữ thuần túy văn bản, trong đó các kí tự được biểu diễn bằng mã ASCII của nó, người dùng có thể đọc được

o Tính chất

 Dễ truy xuất và xử lý

 Độ bảo mật kém

 Tốc độ truy xuất kém

 Kích thước lớn

o Ví dụ: Lưu số nguyên 12345 ở dạng binary (2 byte) và dạng chuỗi (5 byte)

o Các dạng thường gặp

 Tập tin cấu hình: *.INI, *.CFG

 *.TXT, *.HTML, *.XML

 Tập tin nhị phân: là tập tin chứa dữ liệu mà có ít nhất một vài chuỗi bit không thể biểu diễn ở dạng văn bản trơn Do đó tập tin này chỉ có máy đọc được, còn người không đọc được

o Tính chất

 Truy xuất và xử lý phức tạp

 Tốc độ truy xuất nhanh

 Tính bảo mật cao hơn

o Các dạng thường gặp

 Các tập tin có cấu trúc tự định nghĩa

 *.DOC, *XLS, *.PDF, *.PPT…

 *.JPG, *.PCX, *.BMP, *.TIF…

 *.MP3, *.WAV, *.AVI…

2 Một số hàm thao tác tập tin với C++

Nhiều bộ thư viện cung cấp một tập các hàm thao tác với tập tin với C++ Ở đây giới thiệu 2 cách phổ dụng:

 Tập hàm trong cstdio (stdio.h)

 Tập hàm trong namespace std

2.1 Sử dụng cstdio (stdio.h)

2.1.1 Một số hàm xử lý chung

Tên hàm Chức năng

fclose Đóng tập tin

fcloseall Đóng tất cả tập tin

fflush Làm sạch vùng đệm của một tập tin đang mở

fflushall Làm sạch vùng đệm của tất cả

remove/unlink Xóa tập tin

feof Kiểm tra xem đã đọc đến cuối tập tin

Trang 3

Khoa CNTT | ĐH KHTN TP HCM Trang 3

2.1.2 Một số hàm xử lý cho tập tin văn bản

Tên hàm Chức năng

fprintf Ghi giá trị dạng text lên tập tin

fscanf Đọc giá trị dạng text từ tập tin

putc/fputc Ghi lên tập tin một kí tự (sử dụng tập tin văn bản hoặc nhị phân có khác biệt ) getc/fgetc Đọc từ tập tin một kí tự (sử dụng tập tin văn bản hoặc nhị phân có khác biệt) fputs Ghi một chuỗi vào tập tin

fgets Đọc một chuỗi từ tập tin

2.1.3 Một số hàm xử lý cho tập tin nhị phân

Tên hàm Chức năng

putw Ghi một số nguyên lên tập tin

getw Đọc một số nguyên từ tập tin

fwrite Ghi các mẫu tin (có cấu trúc định trước) lên tập tin

fread Đọc các mẫu tin (có cấu trúc định trước) từ tập tin

fseek Di chuyển con trỏ đến vị trí mong muốn

ftell Cho biết vị trí hiện tại của con trỏ

Chi tiết của mỗi hàm có thể xem từ MSDN hoặc link sau:

http://www.cplusplus.com/reference/clibrary/cstdio/

2.1.4 Ví dụ:

 Ghi tập tin văn bản

/* fprintf example */

#include <stdio.h>

int main ()

{

FILE * pFile;

int n;

char name [100];

pFile = fopen ("myfile.txt","w");

for (n=0 ; n<3 ; n++)

{

puts ("please, enter a name: ");

gets (name);

fprintf (pFile, "Name %d [%-10.10s]\n",n,name);

}

fclose (pFile);

return 0;

}

Trang 4

Khoa CNTT | ĐH KHTN TP HCM Trang 4

Đọc tập tin văn bản

/* fscanf example */

#include <stdio.h>

int main ()

{

char str [80];

float f;

FILE * pFile;

pFile = fopen ("myfile.txt","w+");

fprintf (pFile, "%f %s", 3.1416, "PI");

rewind (pFile);

fscanf (pFile, "%f", &f);

fscanf (pFile, "%s", str);

fclose (pFile);

printf ("I have read: %f and %s \n",f,str);

return 0;

}

 Ghi tập tin nhị phân

#include <stdio.h>

int main ()

{

FILE * pFile;

char buffer[] = { 'x' , 'y' , 'z' };

pFile = fopen ( "myfile.bin" , "wb" );

fwrite (buffer , 1 , sizeof(buffer) , pFile );

fclose (pFile);

return 0;

}

#include <stdio.h>

#include <stdlib.h>

int main () {

FILE * pFile;

long lSize;

char buffer[255];

Trang 5

Khoa CNTT | ĐH KHTN TP HCM Trang 5

pFile = fopen ( "myfile.bin" , "rb" );

if (pFile==NULL) {fputs ("File error",stderr); return;}

// copy the file into the buffer:

result = fread (buffer,1,255,pFile);

if (result != lSize) {fputs ("Reading error",stderr); return;}

fclose (pFile);

return 0;

}

2.2 Sử dụng namespace std

 ofstream: class gồm các phương thức để ghi tập tin

 ifstream: class gồm các phương thức để đọc tập tin

 fstream: class gôm các phương thức cho cả thao tác đọc và ghi tập tin

Ở đây chỉ giới thiệu fstream

2.2.1 Một số hàm xử lý chung

Tên phương thức Chức năng

is_open Kiểm tra xem tập tin có đang mở hay không

flush Làm sạch vùng đệm của tập tin đang mở

good Kiểm tra trạng thái của tập tin có tốt để đọc/ghi không

eof Kiểm tra xem đã đọc đến cuối tập tin chưa

2.2.2 Một số hàm xử lý cho tập tin văn bản

Tên phương thức Chức năng

operator >> Đọc dữ liệu từ tập tin

operator << Ghi dữ liệu vào tập tin

getline Đọc một dòng dữ liệu từ tập tin

get Đọc một kí tự hoặc một chuỗi từ tập tin, tùy thuộc vào tham số của phương

thức

put Ghi một kí tự xuống tập tin

2.2.3 Một số hàm xử lý cho tập tin nhị phân

Tên phương thức Chức năng

read Đọc mẫu tin (theo cấu trúc định trước) từ tập tin

write Ghi mẫu tin (theo cấu trúc định trước ) vào tập tin

seekg Di chuyển con trỏ file đến vị trí xác định

tellp Cho biết vị trí hiện tại của con trỏ file

Trang 6

Khoa CNTT | ĐH KHTN TP HCM Trang 6

Chi tiết của mỗi hàm có thể tham khảo trên MSDN hoặc link sau:

http://www.cplusplus.com/reference/iostream/fstream/

2.2.4 Ví dụ:

 Ghi tập tin văn bản

#include <iostream>

#include <fstream>

using namespace std;

int main () {

ofstream myfile;

myfile.open ("example.txt");

myfile << "Writing this to a file.\n";

myfile.close();

return 0;

}

#include <iostream>

#include <fstream>

#include <string>

using namespace std;

int main () {

string line;

ifstream myfile ("example.txt");

if (myfile.is_open())

{

while ( myfile.good() )

{

myfile >> line;

cout << line << endl;

}

myfile.close();

}

else cout << "Unable to open file";

return 0;

}

 Ghi tập tin nhị phân

#include <fstream>

Trang 7

Khoa CNTT | ĐH KHTN TP HCM Trang 7

using namespace std;

int main ()

{

ifstream file ("example.bin", ios::out|ios::binary|ios::ate); char buffer[] = { 'x' , 'y' , 'z' };

if(file.is_open())

file.write(buffer , sizeof(buffer) );

file.close();

return 0;

}

// Đọc toàn bộ nội dung của tập tin

#include <iostream>

#include <fstream>

using namespace std;

ifstream::pos_type size;

char * memblock;

int main () {

ifstream file ("example.bin", ios::in|ios::binary|ios::ate);

if (file.is_open())

{

size = file.tellg();

memblock = new char [size];

file.seekg (0, ios::beg);

file.read (memblock, size);

file.close();

cout << "the complete file content is in memory";

delete[] memblock;

}

else cout << "Unable to open file";

return 0;

}

Ngày đăng: 18/05/2014, 10:25

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w