kan3k1k3n
@kan3k1k3n

Как убрать дублирование чисел в бинарном файле на си?

есть код для нахождения числа, которое встречается в массиве чаще всего. сам массив записан в файле input.bin и выглядит вот так: 1 7 7 7 7 7 7 7 6 7 8 7 6 5 5
код:
#include <stdio.h>
#include <stdlib.h>

int findmostfrequentnumber(int arr[]) {
    int maxcount = 0;
    int mostfrequentnumber = 0;

    for (int i = 0; i < 15; i++) {
        int count = 1;
        for (int j = i + 1; j < 15; j++) {
            if (arr[j] == arr[i])
                count++;
        }

        if (count > maxcount) {
            maxcount = count;
            mostfrequentnumber = arr[i];
        }
    }
    return mostfrequentnumber;
}

int main() {
    system("chcp 65001");
    FILE* inputFile = fopen("input.bin", "rb");
    if (inputFile == NULL) {
        printf("ошибка открытия файла input.bin");
        return 1;
    }

    int arr1[15];

    fread(arr1, sizeof(int), 15, inputFile);

    fclose(inputFile);

    int result1 = findmostfrequentnumber(arr1);

    FILE* outputFile = fopen("output.bin", "wb");
    if (outputFile == NULL) {
        printf("ошибка открытия файла output.bin");
        return 1;
    }

    fwrite(&result1, sizeof(int), 1, outputFile);

    fclose(outputFile);
}

в файл output.bin у меня записывается два числа 7, то есть дублируется. как сделать так, чтобы записывалось только одно число?
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
С чего вы взяли, что туда записывается два числа 7?
Туда записывается одно число размером в 4 байта, которое, если его интерпретировать как строку, выглядит как "7 7 ".

Вы числа читаете и пишите в бинарном формате. Соответственно, файл input.bin у вас должен в hex редакторе выглядеть "0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x07...", а не то, что у вас.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы