Advertisement
Guest User

Untitled

a guest
Jan 9th, 2017
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.36 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define INPUT_FILENAME "input.txt"
  6. #define OUTPUT_FILENAME_1 "output1.txt"
  7. #define OUTPUT_FILENAME_2 "output2.txt"
  8.  
  9. #define MAX_LINE_LEN 256    // размер буфера
  10.  
  11. int main(){
  12.  
  13.     int res = 0;
  14.  
  15.     FILE* fd_input = NULL;
  16.     FILE* fd_output1 = NULL;
  17.     FILE* fd_output2 = NULL;
  18.  
  19.     char str_buff[MAX_LINE_LEN];    // буфер для строк
  20.     // заполняем буфер нулями
  21.     memset(str_buff, '\0', MAX_LINE_LEN * sizeof(char));
  22.  
  23.     fd_input = fopen(INPUT_FILENAME, "r");
  24.     // если указатель на файл == NULL, то ошибка
  25.     if(!fd_input){
  26.         printf("Ошибка при открытии файла %s\n", INPUT_FILENAME);
  27.         res = 1;
  28.         goto __exit_l;
  29.     }
  30.  
  31.     fd_output1 = fopen(OUTPUT_FILENAME_1, "w");
  32.     if(!fd_input){
  33.         printf("Ошибка при открытии файла %s\n", OUTPUT_FILENAME_1);
  34.         res = 1;
  35.         goto __exit_l;
  36.     }
  37.  
  38.     fd_output2 = fopen(OUTPUT_FILENAME_2, "w");
  39.     if(!fd_input){
  40.         printf("Ошибка при открытии файла %s\n", OUTPUT_FILENAME_2);
  41.         res = 1;
  42.         goto __exit_l;
  43.     }
  44.  
  45.     // читаем из файла пока можем
  46.     while(fgets(str_buff, MAX_LINE_LEN, fd_input) != NULL){
  47.         // получили "имя"
  48.         char* pch = strtok(str_buff, " ");
  49.         if(pch == NULL){
  50.             printf("Ошибка формата данных в входном файле.\n");
  51.             res = 1;
  52.             goto __exit_l;
  53.         }
  54.         // записали "имя"
  55.         fputs(pch, fd_output1);
  56.         // добавили символ перехода на новую строку
  57.         fputs("\n", fd_output1);
  58.  
  59.         // получили "дату"
  60.         pch = strtok(NULL, " ");
  61.         if(pch == NULL){
  62.             printf("Ошибка формата данных в входном файле.\n");
  63.             res = 1;
  64.             goto __exit_l;
  65.         }
  66.         // записали "дату"
  67.         fputs(pch, fd_output2);
  68.  
  69.         // почистили буфер
  70.         memset(str_buff, '\0', MAX_LINE_LEN * sizeof(char));
  71.     }
  72.  
  73.     __exit_l:
  74.     // закрыли все файлы
  75.     if(fd_input)
  76.         fclose(fd_input);
  77.     if(fd_output1)
  78.         fclose(fd_output1);
  79.     if(fd_output2)
  80.         fclose(fd_output2);
  81.  
  82.     return res;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement