Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Fopen


Автор: Flat 30.12.2003, 09:55
немогу разобраться с Fopen()
не мог бы ктонить сбросить кусок програмки для примера, желательно с описанием.
цель сохранить массив в файл и на оборот.
подскажите плиз чайнику....

Автор: maxim1000 30.12.2003, 12:09
Код
file=fopen("c:\\qqq.txt","w");
fwrite("723554132456",12,1,file);
fclose(file);

Автор: Flat 30.12.2003, 13:57
Цитата(maxim1000 @ 30.12.2003, 12:09)
Код
file=fopen("c:\\qqq.txt","w");
fwrite("723554132456",12,1,file);
fclose(file);



fwrite("723554132456",12,1,file); здесь как я понял в кавычках что сохранить, потом колво сиволов, колво строк и куда сохранять

могу ли я текст заменить на имя массива? а цифровое?
сенкс большой, и за будущий ответ тож...

Автор: Ars 30.12.2003, 14:01
fwrite: первый аргумент - указатель на массив, второй - кол-во элементов, третий - размер одного элемента в байтах, четвертый - ты сам догадался smile.gif

Автор: maxim1000 30.12.2003, 14:12
Цитата
могу ли я текст заменить на имя массива?

с точки зрения функции она получает просто указатель на область памяти
ей нет никакой разницы, массив это или просто какой-то левый указатель
ее дело записать
Цитата
а цифровое?

не понял...


кстати, есть еще fread: у нее те же параметры, только вместо записи она читает
обе этих функции возвращают количество обработанных элементов
если при чтении количество прочитанных элементов меньше количества "заказанных", скорее всего закончился файл

Автор: val 30.12.2003, 15:31
Можно еще и так:
Код

#include <stdio.h>
#include <process.h>

FILE *stream;

void main( void )
{
  int    i = 10;
  double fp = 1.5;
  char   s[] = "this is a string";
  char   c = '\n';

  stream = fopen( "fprintf.out", "w" );
  fprintf( stream, "%s%c", s, c );
  fprintf( stream, "%d\n", i );
  fprintf( stream, "%f\n", fp );
  fclose( stream );
  system( "type fprintf.out" );
}


Автор: Flat 30.12.2003, 16:03
Цитата(Ars @ 30.12.2003, 14:01)
fwrite: первый аргумент - указатель на массив, второй - кол-во элементов, третий - размер одного элемента в байтах, четвертый - ты сам догадался smile.gif

а как тогда сохранить двух трех мерный массивconfused.gif если такое понятие ваще существует в с++.... я просто тока начал им заниматься после басиков и асмов...

Автор: Ars 30.12.2003, 16:16
Цитата
а как тогда сохранить двух трех мерный массив

В С есть двумерные статические массивы вида
Код
int Array[x][y];

Вот его можно сохранить достаточно просто:
Код
fwrite(Array,x*y,sizeof(int),file);
Для того, чтобы сохранять многомерные динамические массивы, придется поизвращаться - все зависит от конкретной задачи.

Автор: Flat 30.12.2003, 17:21
sizeof(int)--- тут как я понялд указать имя массива? тогда мене б олдьше ничые не надо... массив смогу привести к двух мерному...

Автор: Ars 5.1.2004, 10:29
Цитата
sizeof(int)--- тут как я понялд указать имя массива? тогда мене б олдьше ничые не надо... массив смогу привести к двух мерному...

Нет. Именно так, как написано. sizeof - оператор, определяющий сколько памяти в байтах используется операндом, в данном случае - типом int. Можно было бы написать и число в явном виде - в данном случае для 32-х разрядной платформы оно =4. Если указывать имя массива, то код должен выглядеть так:
Код
fwrite(Array,sizeof(Array),1,file);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)