Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* В файле лежит целое число N и далее ещё N целых чисел,
- * образующих массив.
- * Переставить элементы массива циклически на одну поицию влево. */
- #include <stdio.h>
- #include <stdlib.h>
- /* Функция считывает count элементов типа int из файла
- * fin в аранее выделенный массив data достаточного рамера.
- * Функция вовращает 0 в случае успеха и -1 в случае ошибки.
- */
- int ReadArray(FILE* fin, int* data, int count);
- int ReadArray(FILE* fin, int* data, int count) {
- for (int k = 0; k < count; k++) {
- if (fscanf(fin, "%d", data + k) != 1)
- return -1;
- }
- return 0;
- }
- /* Функция выводит элементы массива в файл. */
- void PrintArray(FILE* fout, int* data, int count);
- void PrintArray(FILE* fout, int* data, int count) {
- for (int k = 0; k < count; k++)
- fprintf(fout, "%d ", data[k]);
- }
- void Process(int* data, int count);
- void Process(int* data, int count) {
- int value = data[0];
- for (int k = 1; k < count; k++)
- data[k - 1] = data[k];
- data[count - 1] = value;
- }
- int main(void) {
- FILE* file;
- int* data;
- int count;
- if ((file = fopen("in.txt", "rt")) == NULL) {
- printf("Can't open input file!\n");
- return -1;
- }
- if (fscanf(file, "%d", &count) != 1) {
- printf("Can't read count!\n");
- fclose(file);
- return -1;
- }
- if (count < 1) {
- printf("Invalid count!\n");
- fclose(file);
- return -1;
- }
- if ((data = (int*) malloc(count * sizeof(int))) == NULL) {
- printf("Can't allocate memory!\n");
- fclose(file);
- return -1;
- }
- if (ReadArray(file, data, count) < 0) {
- printf("Can't read array!\n");
- fclose(file);
- free(data);
- }
- fclose(file);
- Process(data, count);
- if ((file = fopen("out.txt", "wt")) == NULL) {
- printf("Can't open output file!\n");
- free(data);
- return -1;
- }
- PrintArray(file, data, count);
- fclose(file);
- free(data);
- return 0;
- }
Add Comment
Please, Sign In to add comment