запись массива в файл
как записать массив целых чисел в файл, fwrite не помогает,там void *,а у меня int...
int masiv [razmer];
///zapolnili masiv
fwrite((void *)masiv, sizeof(int), razmer , file);
int masiv [razmer];
///zapolnili masiv
fwrite((void *)masiv, sizeof(int), razmer , file);[/QUOT]
сказал же,что эт фигня не работает, ошибку выдает при запуске,хотя компилиться без ошибок
...
int masiv [100];
for(int i = 0;i<100;i++) fout<<"My data ["<<i<<"] = "<<masiv<<endl;
....
далее лезешь в файл и смотришь свои данные
Я предлагаю другой способ....
int array[512];
FILE *f = fopen("filename.txt", "w");
for(int i = 0; i < 512; i++)
{
fprintf(f, "%d ", array);
}
fclose(f);
Цитата:
сказал же,что эт фигня не работает, ошибку выдает при запуске,хотя компилиться без ошибок
Так ошибку в студию. Или код. Ошибка скорее всего не там, а где то не неправильно с памятью работаете. Код у Alexandoros.
Цитата:
for(int i = 0;i<100;i++) fout<<"My data ["<<i<<"] = "<<masiv<<endl;
А вот это бред писать поэлементно. А если элементов будет пара милионов, что их все в цикле перебирать?
А вот это бред писать поэлементно. А если элементов будет пара милионов, что их все в цикле перебирать?[/QUOTE]
Перебирать.
Автор топика не указал для каких именно целей необходимо записывать массив в файл. Такая запись полезна при отладке файл можно просмотреть листером и увидеть все элементы массива, а fprintf или fwrite пишут массив в файл разделяя элементы пробелами.
fwrite и подобные ничего не разделяют. Они пишут просто n байт на которые ссылается указатель (массив)
fprintf лучше=)
Смотря для каких целей. fprintf - это текстовый вывод вобще то.
Нужно разобраться в каком виде выводить цифры в файл, потому что файлы бывают двоичные, текстовые. Если числа нужно вывести в виде текста, то сначала переводим число в текстовую строку (используем sprintf), затем пишем строку в файл - можно использовать потоки, функции ANSI (fwrite,fread,...), низкоуровневые функции Windows (из <io.h>, напр. _read), функции API (напр.ReadFile). Я бы рекомендовал использовать потоки (из STL) - это удобно, достаточно быстро и к тому же совместимо с различными платформами.
Ну вобще то, для этого не надо число переводить в строку, оно самом переведется ) Как собственно и в других методах есть подобная возможность.
А файлы то они все двоичные. Текстовые только логическое разделение для нас, где не сами числа, а коды их символьного представления.
int nSize = 100;
int pnMyArr[nSize];
// Заполняем массив
.........
// Открываем файл
.........
fwrite(&pnMyArr, sizeof(pnMyArr), nSize , file); // file - дескриптор файла
// Закрываем файл
........
Для вывода чисел проще всего связывая файл ofstream out("name")