Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Помогите конвертировать код

  • Автор темы Автор темы Jacellen
  • Дата начала Дата начала
Ты че баклан, дефективный?
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
18 Мар 2019
Сообщения
822
Реакции
64
C#:
Expand Collapse Copy
var arraybytes = File.ReadAllBytes(dir);
var reg = Marshal.AllocHGlobal(arraybytes.Length);
for (var i = 0; i < arraybytes.Length; i++)
    Marshal.WriteByte(reg, i, arraybytes[i]);

Нужно конвертировать в СИ.

Смысл получить байты файла (в СИ char* ) и длину байтов (в СИ guint32)
 
C#:
Expand Collapse Copy
var arraybytes = File.ReadAllBytes(dir);
var reg = Marshal.AllocHGlobal(arraybytes.Length);
for (var i = 0; i < arraybytes.Length; i++)
    Marshal.WriteByte(reg, i, arraybytes[i]);

Нужно конвертировать в СИ.

Смысл получить байты файла (в СИ char* ) и длину байтов (в СИ guint32)
C++:
Expand Collapse Copy
auto arraybytes = File::ReadAllBytes(dir);
auto reg = Marshal::AllocHGlobal(arraybytes.size());
for (auto i = 0; i < arraybytes.size(); i++)
{
    Marshal::WriteByte(reg, i, arraybytes[i]);
}

Пожалуйста, авторизуйтесь для просмотра ссылки.
// пособие маршалинга в C++ Marshal::

File:: вроде из : <stdio.h> .
 
C++:
Expand Collapse Copy
auto arraybytes = File::ReadAllBytes(dir);
auto reg = Marshal::AllocHGlobal(arraybytes.size());
for (auto i = 0; i < arraybytes.size(); i++)
{
    Marshal::WriteByte(reg, i, arraybytes[i]);
}

Пожалуйста, авторизуйтесь для просмотра ссылки.
// пособие маршалинга в C++ Marshal::

File:: вроде из : <stdio.h> .
Может я не прав, но разве stdio есть в C(Не C++)?
 
Может я не прав, но разве stdio есть в C(Не C++)?
Да в С есть данная библиотека, в основном она содержит прототипы всех функций ввода - вывода, как пример можно привести простую функцию ввода scanf() и функцию вывода printf().
 
Последнее редактирование:
Да в С есть данная библиотека, в основном она содержит прототипы всех функций ввода - вывода, как пример можно привести простую функцию ввода scanf() и функцию вывода printf().
странно, но у меня не может найти stdio
 
Ля я слепой не заметил что тебе нужен код именно в Си, я не думаю что в Си есть маршалинг, найди ему замену.
 
C:
Expand Collapse Copy
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>  
#include <stdlib.h>

unsigned char* file_read_bytes(const char* dir, size_t* size) {
    FILE* file = fopen(dir, "rb");
    if (!file)
        return 0;
    fseek(file, 0, SEEK_END);
    size_t file_size = ftell(file);
    rewind(file);
    unsigned char* buf = malloc(file_size);
    *size = fread(buf, sizeof(unsigned char), file_size, file);
    fclose(file);
    if (*size == 0) {
        free(buf);
        return NULL;
    }
    return buf;

}

void main() {
    size_t file_size = 0;
    unsigned char* file_bytes = file_read_bytes("C:\\SOFTWARE\\test.txt", &file_size);
}
 
Последнее редактирование:
Назад
Сверху Снизу