Chương trình sao chép nội dung file trong C hay còn gọi là copy nội dung file trong C, sao chép nội dung file này sang file khác trong C, copy nội dung file này sang file khác trong C.
Nội dung chính
Bài tập C - Sao chép nội dung file trong C
Đề bài: Viết chương trình C để sao chép nội dung từ file này sang file khác.
Đây là bài tập C cơ bản giúp bạn hiểu cách mở file, đọc ghi file bởi sử dụng các hàm fopen(), fgetc() và fputc() trong C.
Lời giải
Giả sử file sinhvien.txt có nội dung như sau:
Name: Vinh ID: 1 Marks: 7.5 Name: Phuc ID: 3 Marks: 9.0 Name: Phi ID: 2 Marks: 10 Name: Manh ID: 4 Marks: 9.5 Name: Thang ID: 5 Marks: 8.0
Dưới đây là chương trình C để sao chép nội dung từ file sinhvien.txt sang file sinhvien-copy.txt:
#include<stdio.h> int main() { FILE *fp1, *fp2; char a; // mo file sinhvien.txt trong che do doc fp1 = fopen("sinhvien.txt", "r"); if (fp1 == NULL) { puts("Khong the mo file sinhvien.txt"); exit(1); } // mo file sinhvien-copy.txt trong che do ghi fp2 = fopen("sinhvien-copy.txt", "w"); if (fp2 == NULL) { puts("Khong the mo file sinhvien-copy.txt"); fclose(fp1); exit(1); } // thuc hien copy file while (a != EOF) { a = fgetc(fp1); if (a != EOF) { fputc(a, fp2); } } printf("Sao chep noi dung file sinhvien.txt\n"); printf("vao file sinhvien-copy.txt thanh cong!"); return(0); }
Chạy chương trình C trên cho kết quả như sau:
Giải thích chương trình trên
Đầu tiên chúng ta mở file sinhvien.txt trong chế độ đọc:
fp1 = fopen("sinhvien.txt", "r");
Và mở file sinhvien-copy.txt trong chế độ ghi:
fp2 = fopen("sinhvien-copy.txt", "w");
Kiểm tra xem file đã được mở thành công hay không bởi sử dụng lệnh kiểm tra NULL.
if (fp1 == NULL) { puts("Khong the mo file sinhvien.txt"); exit(1); }
Nếu mọi thứ đã sẵn sàng: chúng ta bắt đầu đọc các ký tự từ file đã mở bởi sử dụng hàm fgetc(file) và sau đó ghi dữ liệu vào trong file khác bởi sử dụng hàm fputc(file).
Ký tự EOF
, là viết tắt của End of File, xác định vị trí cuối cùng của file. Kiểm tra nếu gặp ký tự này thì tiến trình ghi dữ liệu vào file của chúng ta sẽ kết thúc.
Đọc nội dung file sao chép
Dưới đây là chương trình C đọc file sinhvien-copy.txt:
#include<stdio.h> int main() { FILE *fp; char name[50]; int id; float marks; fp = fopen("sinhvien-copy.txt", "r"); if(fp == NULL) { printf("Khong the mo file sinhvien-copy.txt\n"); exit(1); } printf("Noi dung file sinhvien-copy.txt: \n\n"); printf("Name:\t\tID\t\tMarks\n"); // doc thong tin sinh vien while( fscanf(fp, "Name: %s\t\tID: %d\t\tMarks: %f\n" , name, &id, &marks) != EOF ) { printf("%s\t\t%d\t\t%.2f\n", name, id ,marks); } fclose(fp); return 0; }
Chạy chương trình C trên cho kết quả như sau: