Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
VladSharikov
22 / 22 / 7
Регистрация: 02.12.2010
Сообщений: 824
#1

Операции с файлами, запись массива в файл в обратном порядке - C++

14.04.2011, 02:12. Просмотров 786. Ответов 2
Метки нет (Все метки)

Собственно сабж!

задача. Компоненты типизированного файла - целые числа. поменять местами первый компонент с последним, второй - с предпоследним и т.д. Поменянный записать в новый файл

Вот мой код! Собственно где ошибка?! Все отлично в принципе... в новый файл пишеться массив... но когда пытаюсь вывести файл output выводит -34753475(бред) 19 -50 -16 17, хотя должен вывести 19 -50 -16 17 -9 , тоесть массив из первого файла, но в обратном порядке. Я предполагаю ошибку в for(int i = size; i > 0; i--) {....}!
i>=0 ? не помогло вроде.

что не так делаю парни и дамы?

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Компоненты типизированного файла - целые числа.
// поменять местами первый компонент с последним, второй - с предпоследним и т.д.
// Поменянный записать в новый файл
 
#include "stdafx.h"
#include <time.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <malloc.h>
 
 
int random();
 
int main(void) {
 
 
    int buffer, *array, size = 0, i;
    /*
    FILE *file; file = fopen("input.dat", "wb");
    for (int i  = 0; i < 5; i++) { 
        buffer = random();
        fwrite(&buffer, sizeof(int), 1, file); 
    }*/
    
    FILE *file; file = fopen("input.dat", "rb");
    while(fread(&buffer, sizeof(int), 1, file)) {
        size++;
    }
 
    array = (int*) malloc(size*sizeof(int));
 
    fseek(file, 0, SEEK_SET);
    
    i = 0;
    while(fread(&buffer, sizeof(int), 1, file)) {
        array[i] = buffer;
        i++;
    }
    fclose(file);
    /*
    for(int i = 0; i < size; i++) {
        printf("%d ", array[i]);
    }
    */
 
    printf("press key to open new file\n"); getch();
    FILE *newfile; newfile = fopen("output.dat", "wb");
 
    printf("press key to write array to a new file\n"); getch();
    for (i = size; i > 0; i--) {
        buffer = array[i];
        fwrite(&buffer, sizeof(int), 1, newfile);
    }
    fclose(newfile);
 
    printf("press key to free memory\n"); getch();
    free(array);
    
    return 0;
    
}
 
int random() {
    int rand_dig;
    return rand_dig =   rand() % 100-50 ;
}
Добавлено через 2 минуты
i = size -1 мб?

Добавлено через 1 час 5 минут
any ideas?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2011, 02:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Операции с файлами, запись массива в файл в обратном порядке (C++):

Запись в обратном порядке элементов массива
Дан массив целых чисел А (20). Записать в обратном порядке элементы массива с...

Запись двухмерного массива в обратном порядке
Сообственно нужно записать массив в обратном порядке. Все перелазил к сожалению...

Почему запись int в файл происходит в обратном порядке?
Разбирался в способе сохранения структур в файле, наткнулся на вот такой...

Найти ошибку. Запись строк в обратном порядке в другой файл
Надо, чтобы с файла читались строки в обратном порядке в другой файл! #include...

Дан файл целых чисел. Создать новый файл, содержащий те же элементы, что и исходный файл, но в обратном порядке
Пожалуйста, помогите решить задачу в C++!!! Дан файл целых чисел. Создать...

Сортировка массива в порядке возрастания и вывод элементов в обратном порядке
нашла на форуме пару примеров, но они не полные и не запускаются, выбрала из...

2
kazak
3057 / 2378 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
14.04.2011, 05:52 #2
А что мб? Давно бы свои догадки и проверил. for (i=size-1; i>=0; i--)
0
VladSharikov
22 / 22 / 7
Регистрация: 02.12.2010
Сообщений: 824
14.04.2011, 08:36  [ТС] #3
Да уж))) все же спасибо, второй раз выручаешь!)))
Я проверял только i>=0, а про size-1 забыл) вернее проверял for(i = size; i >= 0; i--) и for(i = size -1; i > 0; i--)... тоесть по отедльности)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2011, 08:36
Привет! Вот еще темы с решениями:

Запись строк в обратном порядке.
Нужно сделать так, что-бы из файла N считывались строки и сохранялись в другой...

Подскажите, как запись строки в обратном порядке?
Подскажите запись строки в обратном порядке.

Функция reverse или запись в обратном порядке
Здравствуйте, как работает функция reverse и как её использовать, читал - чет...

Дан символьный файл f. Записать в файл g элементы файла f в обратном порядке
Помогите написать программу


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru