Tệp là một vị trí lưu trữ vật lý trên đĩa và thư mục là một đường dẫn hợp lý được sử dụng để tổ chức các tệp. Tệp tồn tại trong một thư mục.
Ba hoạt động mà chúng tôi có thể thực hiện trên tệp như sau -
- Mở tệp.
- Xử lý tệp (đọc, ghi, sửa đổi).
- Lưu và đóng tệp.
Chương trình
Sau đây là chương trình C để lưu trữ các số chẵn, lẻ và số nguyên tố thành các tệp riêng biệt -
#include <stdio.h> #include <stdlib.h> /* Function declarations */ int even(const int num); int prime(const int num); int main(){ FILE * fptrinput, * fptreven, * fptrodd, * fptrprime; int num, success; fptrinput = fopen("numbers.txt", "r"); fptreven = fopen("even-numbers.txt" , "w"); fptrodd = fopen("odd-numbers.txt" , "w"); fptrprime= fopen("prime-numbers.txt", "w"); if(fptrinput == NULL || fptreven == NULL || fptrodd == NULL || fptrprime == NULL){ /* Unable to open file hence exit */ printf("Unable to open file.\n"); exit(EXIT_FAILURE); } /* File open success message */ printf("File opened successfully. Reading integers from file. \n\n"); // Read an integer and store read status in success. while (fscanf(fptrinput, "%d", &num) != -1){ if (prime(num)) fprintf(fptrprime, "%d\n", num); else if (even(num)) fprintf(fptreven, "%d\n", num); else fprintf(fptrodd, "%d\n", num); } fclose(fptrinput); fclose(fptreven); fclose(fptrodd); fclose(fptrprime); printf("Data written successfully."); return 0; } int even(const int num){ return !(num & 1); } int prime(const int num){ int i; if (num < 0) return 0; for ( i=2; i<=num/2; i++ ) { if (num % i == 0) { return 0; } } return 1; }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
File opened successfully. Reading integers from file. Data written successfully.
Giải thích
Dưới đây là giải thích cho chương trình được sử dụng để lưu trữ các số chẵn, lẻ và số nguyên tố thành các tệp riêng biệt -
Input file: numbers.txt file contains: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Which is open in read mode (already exists file) Separated even, odd and prime numbers in separate file after execution even-numbers.txt contains: 4 6 8 10 12 14 16 odd-numbers.txt contains: 9 15 prime-numbers.txt contains: 1 2 3 5 7 11 13 17