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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VladSharikov
22 / 22 / 1
Регистрация: 02.12.2010
Сообщений: 824
#1

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

14.04.2011, 02:12. Просмотров 707. Ответов 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?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2011, 02:12     Операции с файлами, запись массива в файл в обратном порядке
Посмотрите здесь:

Не использую доп. элементов массива переставить элементы массива в обратном порядке C++
C++ Массив. Положительные элементы массива а, записанные в том же порядке + отрицательные элементы массива b, записанные в обратном порядке
C++ Поместить элементы массива M в начало массива B в обратном порядке
C++ Почему запись int в файл происходит в обратном порядке?
Дано целое число n. Вывести двоичную запись числа в обратном порядке C++
Запись строк в обратном порядке. C++
C++ Найти ошибку. Запись строк в обратном порядке в другой файл
C++ Подскажите, как запись строки в обратном порядке?
C++ Запись в обратном порядке элементов массива
Переписать строки в обратном порядке в другой файл C++
C++ Написать программу-обработчик запись слов в обратном порядке
Запись двухмерного массива в обратном порядке C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
3032 / 2353 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
14.04.2011, 05:52     Операции с файлами, запись массива в файл в обратном порядке #2
А что мб? Давно бы свои догадки и проверил. for (i=size-1; i>=0; i--)
VladSharikov
22 / 22 / 1
Регистрация: 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--)... тоесть по отедльности)
Yandex
Объявления
14.04.2011, 08:36     Операции с файлами, запись массива в файл в обратном порядке
Ответ Создать тему
Опции темы

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