-
Tạo, đóng, mở tệp tin văn bản và tệp tin nhị phân
-
Giới thiệu một số hàm về xử lý tệp tin
-
Các hàm nhập xuất theo kiểu văn bản
-
Các hàm nhâp xuât theo kiểu nhị phân
-
Nhập xuất ngẫu nhiên
1/ Tạo mảng hai chiều lưu xuống tệp tin:
Viết chương trình nhập ma trận số nguyên a[n][m] với chỉ số hàng(n) và chỉ số cột(m) chưa biết trước được nhập từ bàn phím. Giá trị mảng a[n][m] được sinh ngẫu nhiên. Sau đó lưu mảng a[n][m] vào tệp tin myfile.txt như sau:
dòng 0: ghi chỉ số hàng và chỉ số cột
n dòng tiếp theo ghi n dòng của ma trận a[n][m]. Xem hình bên dưới:
Gợi ý: Dùng con trỏ trỏ tới mảng a[][], int *pa = new int[n*m];
---------------------------------------------------------
Mã chương trình:
2/ Đọc mảng hai chiều lưu trong tệp tin ra:
Cho tệp tin "MyFile.txt" có định dạng như sau:
- Dòng 1 ghi 2 số n và m lần lượt là số hàng và số cột của mảng hai chiều
- n dòng tiếp theo, mỗi dòng ghi m số nguyên cách nhau bởi 1 khoảng trắng (space)
Xem ví dụ hình sau:
1/ Tạo mảng hai chiều lưu xuống tệp tin:
Viết chương trình nhập ma trận số nguyên a[n][m] với chỉ số hàng(n) và chỉ số cột(m) chưa biết trước được nhập từ bàn phím. Giá trị mảng a[n][m] được sinh ngẫu nhiên. Sau đó lưu mảng a[n][m] vào tệp tin myfile.txt như sau:
dòng 0: ghi chỉ số hàng và chỉ số cột
n dòng tiếp theo ghi n dòng của ma trận a[n][m]. Xem hình bên dưới:
Gợi ý: Dùng con trỏ trỏ tới mảng a[][], int *pa = new int[n*m];
---------------------------------------------------------
Mã chương trình:
#include <stdio.h>
void main()
{
FILE *pFile = NULL;
int n, m;
int *pa =
NULL;
printf("\nnhap
hang, cot cua ma tran:");
scanf("%d
%d", &n, &m);
pa = new int[n*m];
//Nhập giá trị
cho mảng
for (int i = 0; i < n; i++)
{
for
(int j = 0; j < m; j++)
{
pa[i*m + j] = i*m + j;
}
}
//in mảng ra màn
console
for (int i = 0; i < n; i++)
{
for
(int j = 0; j < m; j++)
{
//printf("%d,
", *(pa +i*m + j));
printf("%d, ", pa[i*m + j]);
}
printf("\n");
}
//Mở file
pFile = fopen("myfile.txt",
"w");
if( pFile
!= NULL)
{
//ghi chỉ
số hàng và cột vào dòng đầu của ma trận
fprintf(pFile, "%d %d\n", n, m);
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
fprintf(pFile, "%d ", pa[i*m + j]);
}
fprintf(pFile, "\n");
}
fclose(pFile);
}
getchar();
}
Cho tệp tin "MyFile.txt" có định dạng như sau:
- Dòng 1 ghi 2 số n và m lần lượt là số hàng và số cột của mảng hai chiều
- n dòng tiếp theo, mỗi dòng ghi m số nguyên cách nhau bởi 1 khoảng trắng (space)
Xem ví dụ hình sau:
Hãy đọc tệp tin "MyFile.txt" ra mảng hai chiều.
Gợi ý: Dùng con trỏ trỏ tới mảng a[][], int *pa = new int[n*m];
Mã chương trình:
//Đọc tệp tin có
định dạng cho trước và lưu vào mảng
#include <iostream>
void main()
{
int n = 0, m = 0, *pArr = NULL;
FILE *pFile;
pFile = fopen("MyFile.txt",
"r+");
if(pFile != NULL)
{
fscanf(pFile, "%d
%d\n", &n, &m);
pArr = new int[n * m];
//int x;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
fscanf(pFile, "%d
", &pArr[i*m + j]);
//fscanf(pFile, "%d
", &x]);
//pArr[i*m + j] = x;
}
fscanf(pFile, "\n");
}
fclose(pFile);
}
//print to screen
printf("%d %d\n",
n, m);
for(int
i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
printf("%3d",
pArr[i*m + j]);
}
printf("\n");
}
delete[] pArr;
pArr = NULL;
system("pause");
}
Kết quả: