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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 126, средняя оценка - 4.90
Liss Mars
3 / 3 / 0
Регистрация: 16.12.2011
Сообщений: 16
#1

Запись числового массива в файл - C++

17.02.2012, 00:28. Просмотров 18955. Ответов 11
Метки нет (Все метки)

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

C++
1
2
3
for(i=0;i<5;i++)
      fwrite( &T[i],sizeof(int),1,stream);
       fclose(stream);
В итоге записывает, но какие-то символы, а надо числа, м.б. я что-то не правильно делаю(что скорее всего).
Помогите пожалуйста буду очень благодарна.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2012, 00:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запись числового массива в файл (C++):

Запись числового массива в файл?? - C++
Срочно нужна помощь!!!! А вопрос, вот какой: Как записать динамический массив двоичных чисел в файл без преобразования в символьный...

Запись массива в файл - C++
Есть функция, записывающая данные в массив void umnogenie(char a, int &amp;n, char b, int m) { char c; int i,j,l,o; ...

Запись из массива а файл - C++
Добый день. Задача такая: Из файла в массив записать содержащийся в нём текст вместе с пробелами, а затем в другой файл из этого массива...

Запись массива в файл - C++
Есть класс class Figure { protected: Figure() { penColor = Form1-&gt;ColorBox1-&gt;Selected;...

запись массива в файл - C++
Имеется структура в массиве. когда ввожу данные например: 2,3,4 7,8,5 то получаю 2 3 4 0 0 0 0 0 0 7 8 5 Как...

Запись массива в файл. - C++
Ребят, помогите. Завтра курсач сдавать. Есть массив структур. Как его в файл записать? Кидаю весь файл, не ругайтесь. //...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Serejke_qq
150 / 108 / 9
Регистрация: 06.07.2011
Сообщений: 224
Завершенные тесты: 2
17.02.2012, 03:24 #2
на С++ можно например так:
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
 
int main()
{
    fstream f;
    f.open("C://test.txt", fstream::in | fstream::out);
 
    if(f == NULL)
    {
        cout << "error!";
        return -1;
    }
 
    int m[] = {1,0,2,4};
 
    for(int i=0; i<4; i++)    // или так
        f << m[i] << endl;
 
    for(int i=0; i<4; i++)    // или так
        f << m[i] << " ";
 
    f.close();
    return 0;
}
1
Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 724
17.02.2012, 12:58 #3
У меня при записи букв латинских все получается,а при записи чисел получается непоймичто
C++
1
2
3
4
5
6
7
8
9
10
11
12
/* fwrite example : write buffer */
#include <stdio.h>
 
int main ()
{
  FILE * pFile;
  char buffer[] = { 'x' , 'y' , 'z' };
  pFile = fopen ( "myfile.bin" , "wb" );
  fwrite (buffer , 1 , sizeof(buffer) , pFile );
  fclose (pFile);
  return 0;
}
работает,а заменив на числа
C++
1
2
3
4
5
6
7
8
9
10
11
12
/* fwrite example : write buffer */
#include <stdio.h>
 
int main ()
{
  FILE * pFile;
  int buffer[] = { 1,2,3,4,5 };
  pFile = fopen ( "myfile.bin" , "wb" );
  fwrite (buffer , 1 , sizeof(buffer) , pFile );
  fclose (pFile);
  return 0;
}
не работает.
С fstream -ом работает,интересно узнать именно почему с fwrite такая фигня
0
Байт
Эксперт C
16063 / 10332 / 1540
Регистрация: 24.12.2010
Сообщений: 19,472
17.02.2012, 13:59 #4
Liss Mars,
Rexer, Чтобы ответить на ваш вопрос надо видеть не только запись, но и то, как вы из этого файла читаете.
Совершенно разные вещи - текстовая мода или бинарная. И если вы пишите бинарно (fwrite), а читаете как текст, то естественно получите ахинею.
Цитата Сообщение от Rexer Посмотреть сообщение
int buffer[] = { 1,2,3,4,5 };
Заключите все циферки в апострофы, как вы сделали с буквами, и будет вам счастье.
2
Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 724
17.02.2012, 14:32 #5
Так если заключить в кавычки то будет же массив символов.
Или я не прав?
0
Liss Mars
3 / 3 / 0
Регистрация: 16.12.2011
Сообщений: 16
17.02.2012, 15:15  [ТС] #6
Байт, хорошо, если я записываю в файл подобным образом, тогда как мне егопрочитать,чтобы были цифры, а не непонятные символы?
0
Петррр
5958 / 3395 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
17.02.2012, 15:27 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <iterator>
#include <fstream>
#include <algorithm>
 
int main() 
{
    std::ofstream stream("numbers.txt");
    int a[] = { 1, 2, 3, 4, 5 };
    int b[5];
    std::copy(a, a + 5, std::ostream_iterator<int>(stream, " "));
    stream.close();
    int count = 0;
    std::ifstream ifstr("numbers.txt");
    while (!ifstr.eof())
        ifstr >> b[count++];
    std::copy(b, b + --count, std::ostream_iterator<int>(std::cout, " "));
    ifstr.close();
    return 0;
}
1
Байт
Эксперт C
16063 / 10332 / 1540
Регистрация: 24.12.2010
Сообщений: 19,472
17.02.2012, 17:18 #8
Цитата Сообщение от Liss Mars Посмотреть сообщение
Байт, хорошо, если я записываю в файл подобным образом, тогда как мне егопрочитать,чтобы были цифры, а не непонятные символы?
C
1
2
3
4
 int buf[5];
f = fopen("test.txt", "rb");
fread(buf, 1, sizeof(buf), f);
for(i=0; i,5; i++) printf("%d\n", buf[i]);
1
Liss Mars
3 / 3 / 0
Регистрация: 16.12.2011
Сообщений: 16
17.02.2012, 18:02  [ТС] #9
Байт, мы друг друга не поняли, это скорей из-за того что я не правильно описала задачу.
Мне нужно записать в файл массив чисел, потом открыть файл и чтоб там были числа написаны через пробел.
Вообще возможно так записать интенджер или нужно преобразовывать в чар?
0
Байт
Эксперт C
16063 / 10332 / 1540
Регистрация: 24.12.2010
Сообщений: 19,472
17.02.2012, 18:32 #10
Liss Mars, fwrite-fread работают с двоичными файлами. Те. пишут-читают копии памяти компьютера
То, что тебе надо
C
1
2
3
f = fopen("test.txt", "w");
for(i=0; i<5; i++) fprintf(f, " %d", buf[i]);
fclose(f);
Читаем
C
1
2
3
f = fopen("test.txt", "r");
for(i=0; i<5; i++) fscanf(f, " %d", buf+i);
fclose(f);
Можешь пользоваться вместо fprintf-fscanf соответствующими функциями семейства cout-cin, я просто не помню их синтаксиса при работе с файлами
2
Liss Mars
3 / 3 / 0
Регистрация: 16.12.2011
Сообщений: 16
17.02.2012, 18:47  [ТС] #11
Байт, Воооот, ааа, только что пыталась через fprintf, но упустила "%d", дурная моя голова! Спасибо Вам огромнейшее!!!!!!!
0
Brukman
0 / 0 / 0
Регистрация: 14.08.2017
Сообщений: 2
17.08.2017, 15:02 #12
А как записать несколько массивов в один файл и потом прочитать их?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2017, 15:02
Привет! Вот еще темы с ответами:

Запись массива в файл - C++
Здравствуйте. Помогите найти ошибку в программе. С клавиатуры вводится предложение, программа считает сколько слов начинается с одинакового...

Запись в файл массива чисел C# - C++
Здравствуйте я пытаюсь записать в файл массив интовских чисел но когда открываю файл там оказываются кракозябры. #include &lt;iostream&gt; ...

Запись двумерного массива в файл - C++
Добрый день! Помогите пожалуйста с программой. Есть функция, в которой вводится двумерный массив в программу. А затем выводится на...

Запись массива в двоичный файл - C++
Здравствуйте. Нужно организовать заполнение двоичного файла случайными целыми числами в интервале . Какая ошибка в моей программе?? ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.08.2017, 15:02
Ответ Создать тему
Опции темы

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