[C/C++] Bài tập ghi và đọc tập tin kiểu văn bản

      Tập tin là một dạng bài tập các bạn cũng cần phải quan tâm. Trong phạm vi chương trình của ngôn ngữ C, C++  thì dữ liệu sẽ không còn nếu như bạn thoát khỏi chương trình đang chạy. Do vậy, bạn cần phải tạo tập tin trong hệ điều hành để lưu trữ và truy xuất khi cần thiết. Bài viết này là bài tập ghi và đọc tập tin kiểu văn bản trong ngôn ngữ C.

      Để thực hiện được những bài toán về tập tin, các bạn cần hoàn thành một số kiến thức cần thiết như sau:

      Các bạn có thể thực hiện một ví dụ sau để hiểu được cách truy xuất tập tin như thế nào.

      Ví dụ 1: Tạo một tập tin dạng văn bản, hãy ghi vào tập tin những số nguyên dương, mỗi số nguyên này cách nhau ít nhất là 1 khoảng trắng.

#include<conio.h>
#include<stdio.h>
#include<Windows.h>
#define max 5

int main()
{
	FILE *f;
	int i, x[max];
        //Nhap du lieu vao mang nguyen   
	printf("Nhap phan tu nguyen\n");
	for(i=0;i<max;i++)
		{
			printf("Nhap vao phan tu thu %d: ", i+1);
			scanf("%d",&x[i]);
		}
	

	f = fopen("C:\\docso.txt","wt"); //Mo tap tin len theo che do ghi
	if(f==NULL)
	{  
		printf("Chuong trinh khong mo duoc tap tin docso.txt");
	}
	else
	{
        //Ghi du lieu vao tap tin
	for(i=0;i<max;i++)
		fprintf(f,"%5d",x[i]);
	printf("\nTap tin docso.txt da duoc ghi thanh cong\n");
	}
      
	fclose(f);
	system("pause");
}

Ví dụ 2: Hãy đọc các số nguyên của tập tin vừa tạo được vào chương trình ở ví dụ 1 và tiến hành thực hiện các yêu cầu sau

  – Hãy đọc tập tin và tính tổng các số chẵn trong tập tin

 – Hãy đọc và đếm xem bao nhiêu số nguyên dương và in lên màn hình

  – Hãy tính giá trị trung bình các số nguyên đọc được

#include<conio.h>
#include<stdio.h>
#include<Windows.h>
#define max 5

int main()
{
	FILE *f;
	int n=0,i, *A;
	f = fopen("C:\\docso.txt","rt");
	if(f==NULL)
	   {  
		printf("Chuong trinh khong mo duoc tap tin docso.txt");
	   }
	else
	{	
       //Đoạn lệnh đếm bao nhiêu phần tử nguyên có trong tập tin
	while (feof(f)==0)
		{
			fscanf(f,"%d",&i);
			n++;
		}

	 fseek(f,0,0);//Đưa con trỏ về đầu tập tin
	 
	 A=(int *)malloc(n*sizeof(int));   //Cấp phát mảng động để lưu trữ dữ liệu
	 for(i=0;i<n;i++)
		 fscanf(f,"%d",&A[i]);

	 printf("\nCac gia tri da doc duoc la:\n");
	 for(i=0;i<n;i++)
		 printf("%5d",A[i]);
	 
	printf("\nTap tin docso.txt da duoc doc thanh cong\n");
	}
	fclose(f);

	//Tinh tong cac so chan
	int tongchan=0;
	for(i=0;i<n;i++)
		if(A[i]%2==0)
			tongchan=tongchan+A[i];
	printf("\nTong cac so chan la %d ",tongchan);

	//Dem so nguyen duong
	int nguyenduong=0;
	for(i=0;i<n;i++)
		if(A[i]>0)
			nguyenduong++;
	printf("\nTrong do co %d so nguyen duong",nguyenduong);

	//Tinh gia tri trung binh
	int tong=0, m=0;
	for(i=0;i<n;i++)
		if(A[i]!=0)
			{
				tong=tong+A[i];
				m=m+1;
			}
	float tb;
	tb=(float)tong/m;

	printf("\nTrung binh = %0.2f\n",tb);
	free(A);
	system("pause");
}

     Với 2 ví dụ trên các bạn có thể hiểu được các bước thao tác đến tập tin gồm

     Bước 1: Khai báo con trỏ dạng FILE

     Bước 2: Mở tập tin ở các mode đọc hoặc ghi

     Bước 3: Thực hiện các lệnh xử lý tập tin ( đọc, ghi)

     Bước 4: Đóng tập tin

   Các bạn có  thể tham khảo thêm chương lý thuyết về tập tin trong ngôn ngữ C qua đường bài viết về tập tin nhé.


Categories: ,

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *