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

Работа с бинарными файлами (программка дважды записывает последнее число) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Цикл с предусловием http://www.cyberforum.ru/cpp-beginners/thread804259.html
#include <iostream> int main() { int s = 0; for (int i = 0; i <= 8; i++) { for (int j = 0; j <= 6; j++) { for (int k = 0; k <= 4; k++) { if (3 * i + 4 * j + 6 * k == 24) { std::cout << "3: " << i << " 4: " << j << " 6: " << k << std::endl; s++;
C++ Списки. Стеки. Очереди Квадрат разбит на {4}^{k} равновеликих квадратных клеток. Квадрат перегибается поочередно относительно вертикальной (правая половина подкладывается под левую) и горизонтальной (нижняя половина подкладывается под верхнюю) оси симметрии до тех пор, пока все клетки не будут расположены друг под другом. Требуется занумеровать клетки исходного квадрата таким образом, чтобы в результате выполнения... http://www.cyberforum.ru/cpp-beginners/thread804255.html
C++ MPI и scanf в С++
Вобщем я делаю параллельную программу. Все процессы в этой программе должны узнать некоторое целое число X, которое пользователь вводит с клавиатуры. Я пока знаю только один способ это осуществить - некоторый один процесс (например с рангом 0) получает это число с помощью scanf у пользователя, а затем шлет его в сообщениях всем остальным процессам (см. код ниже). Вопрос - можно ли как-то...
Ошибка в задаче про массивы C++
Написал прогу,строго не судите,но какой то косяк здесь не знаю даже где,она должна Найти сумму элементов массива, которые находятся между максимальным и минимальным числами. В сумму включить и оба этих числа.Помогите плиз ошибку найти #include <stdio.h> #include <iostream> #include <conio.h> #include<math.h> using namespace std;
C++ Окружность http://www.cyberforum.ru/cpp-beginners/thread804225.html
Господа! Как нарисовать систему координат (две оси Ох и Оу) круг с центром в начале координат, если известен максимум по одной из осей? Т.е. центр круга всегда начало коорд. (0) и известна одна точка на оси. Спасибо за внимание!
C++ Разворот строки через указатель ну вообщем обычное задание развернуть строку наоборот, обычный метод я знаю а как реализвать черерз указатели? for example: char *p=" i love c++" написал но оно не работает ))) char *mas="12345678"; for(int i=0,p=strlen(mas)-1;p>i;i++,p--) подробнее

Показать сообщение отдельно
Plu6e4ka
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 15
09.03.2013, 22:54     Работа с бинарными файлами (программка дважды записывает последнее число)
Добрый день, помогите пожалуйста с такой ситуацией:
написал програмку для заполнения бинарного файла рандомными числами (их количество вводится в начале программы):
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
#include <iostream>
#include <fstream>
#include <time.h>
using namespace std;
 
void random(int N){
    ofstream file("resource.bin", ios::binary|ios::out);
    srand(time(NULL));
    int digit;
    for(int i = 1;i <= N;i++){
        digit = +60-rand()%100;
        file.write((char*)&digit, sizeof digit);
    }
    file.close();
}
 
int main(int argc, char *argv[]){
    setlocale(LC_ALL, "Russian");
    int N;
    cout << "Число чисел  в файле: ";
    cin >> N;
    random(N);
    system("PAUSE");
    return 0;
}
решил проверить содержимое созданного файла и столкнулся с проблемой, которую так и не решил. Суть её в том, что программка дважды записывает последнее число. Например: -36 34 -17 38 -21 -38 -38.
Код программы которой я проверяю файл:
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
#include <iostream>
#include <fstream>
using namespace std;
 
int readFile(string name){
    ifstream file(name, ios::binary|ios::in);
    ofstream tmp("tmp", ios::binary|ios::out);
    int digit;
    if(file.is_open()){ 
        while(!file.eof()){
            file.read((char*)&digit, sizeof digit);
            cout << digit << " ";
        }
        cout << endl;
    }
    file.close();
            return 0;
}
 
int main(int argc, char *argv[]){
    setlocale(LC_ALL, "Russian");
             readFile("resource.bin");
    system("PAUSE");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru