View difference between Paste ID: 9ituzF0H and rD09tzeb
SHOW: | | - or go back to the newest paste.
1
/* В файле лежит целое число N и далее ещё N целых чисел,
2
 * образующих массив.
3
 * Переставить элементы массива циклически на одну поицию влево. */
4
5
#include <stdio.h>
6
#include <stdlib.h>
7
8
9
/* Функция считывает  count элементов типа int из файла
10
 * fin в аранее выделенный массив data достаточного рамера.
11
 * Функция вовращает 0 в случае успеха и -1 в случае ошибки.
12
 */
13
14
int ReadArray(FILE* fin, int* data, int count);
15
16
int ReadArray(FILE* fin, int* data, int count) {
17
    for (int k = 0; k < count; k++) {
18
        if (fscanf(fin, "%d", data + k) != 1)
19
            return -1;
20
    }
21
    
22
    return 0;
23
}
24
25
26
/* Функция выводит элементы массива в файл. */
27
void PrintArray(FILE* fout, int* data, int count);
28
29
void PrintArray(FILE* fout, int* data, int count) {
30
    for (int k = 0; k < count; k++)
31
        fprintf(fout, "%d ", data[k]);
32
}
33
34
void Process(int* data, int count);
35
36
void Process(int* data, int count) {
37
    int value = data[0];
38
    
39
    for (int k = 1; k < count; k++)
40
        data[k - 1] = data[k];
41
    
42
    data[count - 1] = value;
43
}
44
45
int main(void) {
46
    FILE* file;
47
    int* data;
48
    int count;
49
    
50
    if ((file = fopen("in.txt", "rt")) == NULL) {
51
        printf("Can't open input file!\n");
52
        return -1;
53
    }
54
    
55
    if (fscanf(file, "%d", &count) != 1) {
56
        printf("Can't read count!\n");
57
        fclose(file);
58
        return -1;
59
    }
60
    
61
    if (count < 1) {
62
        printf("Invalid count!\n");
63
        fclose(file);
64
        return -1;
65
    }
66
    
67
    if ((data = (int*) malloc(count * sizeof(int))) == NULL) {
68
        printf("Can't allocate memory!\n");
69
        fclose(file);
70
        return -1;
71
    }
72
    
73
    if (ReadArray(file, data, count) < 0) {
74
        printf("Can't read array!\n");
75
        fclose(file);
76
        free(data);
77
    }
78
    
79
    fclose(file);
80
    
81
    Process(data, count);
82
    
83
    if ((file = fopen("out.txt", "wt")) == NULL) {
84
        printf("Can't open output file!\n");
85
        free(data);
86
        return -1;
87
    }
88
    
89
    PrintArray(file, data, count);
90
91
    fclose(file);
92
    free(data);
93
    
94
    return 0;
95
}
96