-          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:

#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();
}

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:


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ả: