Форум программистов, компьютерный форум CyberForum.ru

Бинарный файл из вещественных чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Связь между приложениями http://www.cyberforum.ru/cpp-beginners/thread295251.html
Здравствуйте, уважаемые форумчане! Есть два приложения - первое на c++ захватывает посредством openCV изображение с вебки и много чего с ним делает. второе на c#. Каким образом, можно сделать так, что бы картинка из 1го приложения оказалась во 2ом приложении (все это должно происходить в реальном времени). Я пробовал сохранять изображение в файл, работает, но если попытаться открыть этот...
C++ Построение класса Обьясните что от меня требуется в этом задании. http://www.cyberforum.ru/cpp-beginners/thread295246.html
C++ Определить, является ли матрица магическим квадратом
помогите решить :sorry: 1)Дана целая квадратная матрица n-го порядка. Определить, является ли она магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы. 2)Вычислить сумму и число положительных элементов матрицы A, находящихся над главной диагональю. Добавлено через 25 минут У меня есть решенная 2) задача на паскале, кто поможет с переводом в С++
Кардиоида C++
Добрый день! Помогите пожалуйста исправить прогу, у меня рисунок не рисует точками(незнаю как ими рисовать): #include <graphics.h> #include <conio.h> #include <math.h> #include <dos.h> int main(void) { clrscr();
C++ Вычислить площади треугольников с помощью формулы Герона http://www.cyberforum.ru/cpp-beginners/thread295209.html
два треугольника заданы координатами своих вершин A, B и C.вычислить площади треугольников с помощью формулы Герона и определить , какой треугольник имеет большую площадь ,при решений задачи используйте следующие данные для первого треугольника A(1,1) B(4,2) C(2,3,5) для второго треугольника A(1,2) B(4,1) C(3,3,5).вычислите длин сторон треугольника и его площади оформить в одной функции длина...
C++ c++ , sprintf() и Дух Плюсов Здравствуйте! Как вам известно во многих учебниках по С++ говорится, что функции printf и scanf использовать можно, но это не в стиле C++ . Мне не совсем понятно как в этом случае дело обстоит со sprintf. Не противоречит ли плюсовому стилю следующий быдлокод (мне это до ужаса не нравится, хочется сделать более изящно): int i=205 char s; std::string str; sprintf(s,"i=%d",i); ... подробнее

Показать сообщение отдельно
fasked
Эксперт С++
4935 / 2515 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
14.05.2011, 13:36
Цитата Сообщение от Jtalk Посмотреть сообщение
Не совсем понятно использование fread для посимвольного считывания - для этого создан fscanf. Кроме того, у меня сильные подозрения, что он будет считывать строку вместе с пробелами.
Учите матчасть, `fread' - бинарное чтение, `fscanf' - форматное. У автора файл бинарный (так написано в задании). А значит и читать надо с помощью `fread'. То есть в файле должны быть не визуальное представление числа (0.5 0.6. 1.4), а битовая копия содержимого переменной типа double, человеческому глазу непонятная.
Это я все к тому, что не надо давать советов, если сами не знаете, о чем говорите

Нулями Вы переписываете содержимое старого файла. Необходимо сначала прочитать файл в массив целиком. А потом записывать, в нужных местах вставляя нули. Вот пример:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
#include <malloc.h>
 
#define FILENAME "file.txt"
 
int main()
{
    FILE *pfile = NULL;
    size_t i = 0, file_size = 0;
    double *values = NULL, zero = 0.0;
 
    if ((pfile = fopen(FILENAME, "rb")) == NULL) {
        fprintf(stderr, "can't open file\n");
        return -1;
    }
 
    fseek(pfile, 0, SEEK_END);
    file_size = ftell(pfile);
    rewind(pfile);
 
    if ((values = (double *)malloc(file_size)) == NULL) {
        fprintf(stderr, "can't allocated memory\n");
        fclose(pfile);
        return -1;
    }
 
    fread(values, sizeof(double), file_size, pfile);
    fclose(pfile);
 
    if ((pfile = fopen(FILENAME, "wb")) == NULL) {
        fprintf(stderr, "can't open file for write\n");
        return -1;
    }
 
    for (i = 1; i < file_size / sizeof(double); ++i) {
        fwrite(values + i - 1, sizeof(double), 1, pfile);
        if (values[i-1] >= values[i])
            fwrite(&zero, sizeof(double), 1, pfile);
    }
 
    free(values);
    fclose(pfile);
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru