C/C++
arr - передаем какой нибудь массив
arr_size - полный размер (я хз в каких еденицах подается массив, поэтому размер в байтах)
path - путь к файлу.
Есть зависимость от размера unsigned long long. Однако чтобы ее не было, формат записи нужно менять на "размер размера (один байт), размер массива в байтах, сам массив".
Массив формирует считывающая функция, которая, по забинденному типу сама расчитает количество элементов (size_arr/size_element) и сформирует массив.
Написать фрагмент кода на си
5. Функция создает двоичный файл с именем «a.dat», пишет туда содержимое массива в в формате «количество элементов - элементы», закрывает файл (4 балла)
void save_in_file(void* arr, unsigned long long arr_size, const char* path)
{
FILE* file;
fopen(path, "wb");
if (!file)
{
printf("Can't create file: %s\n", path);
return;
}
if (fwrite(&arr_size, 8, 1, file) != 8|| fwrite(arr, 1, arr_size, file) != arr_size)
{
printf("Write error file: %s\n", path);
}
fclose(file);
}
(массив arr, размер arr_size, путь к файлу path)arr - передаем какой нибудь массив
arr_size - полный размер (я хз в каких еденицах подается массив, поэтому размер в байтах)
path - путь к файлу.
Есть зависимость от размера unsigned long long. Однако чтобы ее не было, формат записи нужно менять на "размер размера (один байт), размер массива в байтах, сам массив".
Массив формирует считывающая функция, которая, по забинденному типу сама расчитает количество элементов (size_arr/size_element) и сформирует массив.
#define __USE_MINGW_ANSI_STDIO 1
#include
#include
#include
void CreateFileWithData(const char *filename, void *data, size_t count, size_t size);
void *TestFileWithData(const char *filename, size_t size, size_t *count);
int main(int argc, char ** argv) {
double a[] = {1.1, 2.2, 3.3, 5.0, 7.7};
// Пишем в файл
CreateFileWithData("test.dat", a, sizeof a / sizeof *a, sizeof *a);
// Тестируем
size_t count = 0;
void *data = TestFileWithData("test.dat", sizeof(double), &count);
assert(data);
for (size_t i = 0; i < count; i++)
printf("%g\n", *(double *)(data + i *sizeof(double)));
return 0;
}
/*
CreateFileWithData
filename - имя файла для записи
data - что пишем
count - количество записываемых объектов
size - размер каждого записываемого объекта
*/
void CreateFileWithData(const char *filename, void *data, size_t count, size_t size) {
FILE *fp = fopen(filename, "wb");
if (!fp) {
perror("error");
return;
}
if (fwrite(&count, sizeof(size_t), 1, fp) != 1 || fwrite(data, size, count, fp) != count) {
printf("error to write file %s\n", filename);
fclose(fp);
return;
}
fclose(fp);
}
/* TestFileWithData возвращает указатель на данные размером size и количеством count */
void *TestFileWithData(const char *filename, size_t size, size_t *count) {
FILE *fp = fopen(filename, "rb");
if (!fp) {
perror("error");
return NULL;
}
if (fread(count, sizeof count, 1, fp) != 1) {
printf("error reading count: %zu\n", *count);
fclose(fp);
return NULL;
}
void *data = malloc(size * *count);
if (fread(data, size, *count, fp) != *count) {
printf("error readind data from %s\n", filename);
fclose(fp);
return NULL;
}
fclose(fp);
return data;
}
#include<stdio.h>
#define count 5
int main()
{
FILE *f=fopen("a.dat", "wb");
if(!f) exit(1);
int arr[count] = {5, 1, 3, 4, 7};
printf(f, "%d - ", count);
for(int i = 0; i < count; i++)
printf(f, " %d", arr[i]);
fclose(f);
return 0;
}
#define count 5
int main()
{
FILE *f=fopen("a.dat", "wb");
if(!f) exit(1);
int arr[count] = {5, 1, 3, 4, 7};
printf(f, "%d - ", count);
for(int i = 0; i < count; i++)
printf(f, " %d", arr[i]);
fclose(f);
return 0;
}
void CreateBinaryFile(int[] array)
{
// Создаем новый бинарный файл с именем "a.dat"
using (BinaryWriter writer = new BinaryWriter(File.Open("a.dat", FileMode.Create)))
{
// Записываем количество элементов массива в файл
writer.Write(array.Length);
// Перебираем элементы массива и записываем их в файл
foreach (int item in array)
{
writer.Write(item);
}
}
}
Похожие вопросы
- Написать фрагмент кода, где формируется двумерный массив, элементы которого могут быть тру и фолс
- Напишите пожалуйста код на 5 вариант очень простой я на 1 курсе вуза и нужен простой код.
- Написать код на си .Желательно с объяснением
- Написать программу на языке Си
- Помогите написать код на Си, по теме "строки".
- Помогите переделать код на Си
- Помогите, пожалуйста, срочно. Прокомментировать код на Си
- Помогите доработать код на СИ по теме строки
- Написать программу на языке Си, которая решит эту задачу:
- Помогите понять фрагмент кода на C++