NickAndNick

Файлы. Чтение запись целых чисел

May 6th, 2013
76
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <locale.h>
  5.  
  6. void random(const char *);
  7. void unique(const char *);
  8.  
  9. int main() {
  10.     const char arbitrary[] = "D:\\arbitrary.txt";
  11.     random(arbitrary);
  12.     unique(arbitrary);
  13.     return 0;
  14. }
  15.  
  16. void unique(const char * _filename) {
  17.     FILE * out;
  18.     errno_t err_out = fopen_s(&out, _filename, "r");
  19.  
  20.     setlocale(LC_CTYPE, ".1251");
  21.  
  22.     if (err_out != 0) printf("\a Невозможно открыть файл!\n");
  23.     else {
  24.         int size;
  25.         fscanf_s(out, "%i", &size);
  26.  
  27.         if (size > 0) {
  28.             int * numbers = NULL;
  29.  
  30.             if (numbers = (int *)calloc(size, sizeof(int))) {
  31.                 FILE * in;
  32.                 errno_t err_in;
  33.                 int next = 0, current, prev;
  34.  
  35.                 while (!feof(out))
  36.                     fscanf_s(out, "%i", &numbers[next++]);
  37.  
  38.                 err_in = fopen_s(&in, "D:\\unique.txt", "w");
  39.  
  40.                 if (err_in != 0)
  41.                     printf("\a Невозможно создать файл!\n");
  42.                 else
  43.                     for (current = 0; current < size; current++) {
  44.                         for (prev = 0; prev < current; prev++)
  45.                             if (numbers[current] == numbers[prev])
  46.                                 break;
  47.  
  48.                         if (current == prev)
  49.                             fprintf(in, "%i%s", numbers[current], " ");
  50.                     }
  51.                 if (in) {
  52.                     err_in = fclose(in);
  53.  
  54.                     if (err_in != 0)
  55.                         printf("\a Невозможно закрыть файл!\n");
  56.                 }
  57.  
  58.                 free(numbers);
  59.                 numbers = NULL;
  60.             }
  61.         }
  62.     }
  63.     if (out) {
  64.         err_out = fclose(out);
  65.  
  66.         if (err_out != 0)
  67.             printf("\a Невозможно закрыть файл!\n");
  68.     }
  69. }
  70. void random(const char * _filename) {
  71.     FILE * stream;
  72.     errno_t err = fopen_s(&stream, _filename, "w");
  73.  
  74.     setlocale(LC_CTYPE, ".1251");
  75.  
  76.     if (err != 0)
  77.         printf("\a Невозможно создать файл!\n");
  78.     else {
  79.         int size;
  80.         srand((unsigned)time(NULL));
  81.         size = 100 + rand() % 101;
  82.         fprintf(stream, "%i\n", size);
  83.  
  84.         while (size--)
  85.             fprintf(stream, "%i%s", rand() % 101, size ? " " : "");
  86.     }
  87.     if (stream) {
  88.         err = fclose(stream);
  89.  
  90.         if (err != 0)
  91.             printf("\a Невозможно закрыть файл!\n");
  92.     }
  93. }
RAW Paste Data