Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
01.11.2025
Размер:
1.55 Кб
Скачать
#include <stdio.h>
#include <stdlib.h>

void processBinaryFile(const char* filename) {
    FILE *f = fopen(filename, "r+b");
    if (!f) {
        printf("Error opening file!\n");
        return;
    }
    
    fseek(f, 0, SEEK_END);
    long fileSize = ftell(f);
    int count = fileSize / sizeof(double);
    rewind(f);
    
    printf("Original file (%d numbers):\n", count);
    double *numbers = (double*)malloc(fileSize);
    fread(numbers, sizeof(double), count, f);
    
    for (int i = 0; i < count; i++) {
        printf("%.2f ", numbers[i]);
    }
    printf("\n");
    
    if (count >= 11) {
        double lastNumber = numbers[count - 1];
        
        // Сдвигаем числа с 10-й позиции
        for (int i = count - 1; i > 10; i--) {
            numbers[i] = numbers[i - 1];
        }
        numbers[10] = lastNumber;
        
        rewind(f);
        fwrite(numbers, sizeof(double), count, f);
        
        printf("Modified file:\n");
        for (int i = 0; i < count; i++) {
            printf("%.2f ", numbers[i]);
        }
        printf("\n");
    } else {
        printf("File has less than 11 numbers, no changes made.\n");
    }
    
    free(numbers);
    fclose(f);
}

int main(int argc, char* argv[]) {
    char filename[100];
    
    if (argc >= 2) {
        strcpy(filename, argv[1]);
    } else {
        printf("Enter filename: ");
        scanf("%s", filename);
    }
    
    processBinaryFile(filename);
    return 0;
}
Соседние файлы в папке Лаба7