Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <sys/stat.h>
- int split_s(char *argv[], FILE *file_ptr){
- FILE *file_ptr_new;
- char name[100], buffer[100], c;
- int number_of_items_transferred_f, kol = 0;
- number_of_items_transferred_f = atoi(argv[3]) / sizeof(char); //Определение размера нового
- struct stat buf; //Определение размера исходного файла
- stat(argv[1], &buf);
- long size, number_of_items_transferred = 0;
- size = buf.st_size;
- printf("Source file size: %lu\n", size);
- for (int i = 0; ; i++){
- kol = 0;
- strcpy(name, argv[5]); //Создание новых
- itoa(i, buffer, 10);
- strcat(name, buffer);
- strcat(name, ".txt");
- file_ptr_new = fopen(name, "wb");
- while (number_of_items_transferred < size) {
- if (kol < number_of_items_transferred_f) {
- c = getc(file_ptr);
- fputc(c, file_ptr_new);
- number_of_items_transferred++;
- kol++;
- }
- if (kol == number_of_items_transferred_f) {
- fclose(file_ptr_new);
- break;
- }
- }
- if (number_of_items_transferred >= size){
- fclose(file_ptr_new);
- return 0;
- }
- }
- }
- int split_n(char *argv[], FILE *file_ptr){
- FILE *file_ptr_new;
- char name[100], buffer[100], c;
- int kol = 0;
- struct stat buf; //Определение размера исходного файла
- stat(argv[1], &buf);
- long size, number_of_items_transferred = 0;
- size = buf.st_size;
- printf("Source file size: %lu\n", size);
- long new_size = size / atoi(argv[3]); //Размер новых файлов
- printf("New file size: %lu\n", new_size);
- for (int i = 0; ; i++){
- kol = 0;
- strcpy(name, argv[5]); //Создание нового файла
- itoa(i, buffer, 10);
- strcat(name, buffer);
- strcat(name, ".txt");
- file_ptr_new = fopen(name, "wb");
- while (number_of_items_transferred < size) {
- if (kol < new_size) {
- c = getc(file_ptr);
- fputc(c, file_ptr_new);
- number_of_items_transferred++;
- kol++;
- }
- if (kol == new_size) {
- fclose(file_ptr_new);
- break;
- }
- }
- if (number_of_items_transferred >= size){
- fclose(file_ptr_new);
- return 0;
- }
- }
- }
- int main(int argc, char *argv[]) {
- FILE *file_ptr = fopen(argv[1], "rb");
- if (file_ptr == NULL){
- printf("\nError: file error.");
- return 1;
- }
- if (argc < 6){
- printf("\nError: Not all arguments received.");
- fclose(file_ptr);
- return 1;
- }
- if ((strcmp(argv[2], "-s") != 0 && strcmp(argv[2], "-n") != 0) || (strcmp(argv[4], "-b") != 0) || atoi(argv[3]) < 0){
- printf("\nError: parameter error.");
- fclose(file_ptr);
- return 1;
- }
- if (strcmp (argv[2], "-s")==0)
- split_s(argv, file_ptr);
- if (strcmp (argv[2], "-n")==0)
- split_n(argv, file_ptr);
- fclose(file_ptr);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement