powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопрос по произвольному доступу к двоичному файлу в С#
10 сообщений из 10, страница 1 из 1
Вопрос по произвольному доступу к двоичному файлу в С#
    #34953472
bigbanka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос в том, как осуществить доступ к конкретному месту двоичного файла, указав с клавиатуры байты. Вся проблема в том, что файл может быть больше 2Гб, следовательно функиции fseek() нельзя использовать, т.к. их действие ограниченно этими самыми 2Гб. Прочитал в книге, что можно использовать функции fgetpos() и fsetpos(), но вот как их применить к кокретному ьпримеру до меня не доходит))). Подскажите как использовать эти, а может и какие-нибудь другие функиции. Вот исходник проги:
#include <stdio.h>
#include <stdlib.h>

int main()
{
int razmer, i, j, k, z, u, g, y, t, e;
FILE *myFile;
//fpos_t filepos;
printf("Vvedite razmer fajla v bajtakh:\n");
t=0;
scanf("%d", &razmer);
if ((razmer%4)!=0) {
y=razmer/4;
razmer=(y+1)*4;
}
j=razmer/4;
if ((myFile=fopen("blin.dat", "wb")) == NULL) {
printf("not be open\n");
}
else {
for ( i=1; i<=j; i++ ) {
k=rand()%300;
fwrite(&k, sizeof(int),1, myFile);
t=t+1;
if (t>=(j/100)) {
printf(".");
t=0;
}
}
fclose (myFile);
}



printf(" \n");
printf("Dlja raspechatki chisel nazhmite 1\n");
scanf("%d", &g);
if (g=1){
if((myFile=fopen("blin.dat", "rb")) == NULL) {
printf("not be open\n");
}
else {
for ( i=1; i<=j; i++) {
fread(&z, sizeof(int),1, myFile);
printf("%d ", z);
}
fclose (myFile);
}
}

scanf("%d", &u);
return 0;
}

Очень нужна ваша помощь, сроки горят((
...
Рейтинг: 0 / 0
Вопрос по произвольному доступу к двоичному файлу в С#
    #34953479
Фотография Tshamіl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bigbankaВопрос в том, как осуществить доступ к конкретному месту двоичного файла, указав с клавиатуры байты. Вся проблема в том, что файл может быть больше 2Гб, следовательно функиции fseek() нельзя использовать, т.к. их действие ограниченно этими самыми 2Гб. Прочитал в книге, что можно использовать функции fgetpos() и fsetpos(), но вот как их применить к кокретному ьпримеру до меня не доходит))). Подскажите как использовать эти, а может и какие-нибудь другие функиции. Вот исходник проги:
#include <stdio.h>
#include <stdlib.h>

int main()
{
int razmer, i, j, k, z, u, g, y, t, e;
FILE *myFile;
//fpos_t filepos;
printf("Vvedite razmer fajla v bajtakh:\n");
t=0;
scanf("%d", &razmer);
if ((razmer%4)!=0) {
y=razmer/4;
razmer=(y+1)*4;
}
j=razmer/4;
if ((myFile=fopen("blin.dat", "wb")) == NULL) {
printf("not be open\n");
}
else {
for ( i=1; i<=j; i++ ) {
k=rand()%300;
fwrite(&k, sizeof(int),1, myFile);
t=t+1;
if (t>=(j/100)) {
printf(".");
t=0;
}
}
fclose (myFile);
}



printf(" \n");
printf("Dlja raspechatki chisel nazhmite 1\n");
scanf("%d", &g);
if (g=1){
if((myFile=fopen("blin.dat", "rb")) == NULL) {
printf("not be open\n");
}
else {
for ( i=1; i<=j; i++) {
fread(&z, sizeof(int),1, myFile);
printf("%d ", z);
}
fclose (myFile);
}
}

scanf("%d", &u);
return 0;
}

Очень нужна ваша помощь, сроки горят((
Я даже незнаю с чего начать:) Вопрос по си шарпу а код на с++, так на каком тебе языке доступ к файлу получать нужно?
...
Рейтинг: 0 / 0
Вопрос по произвольному доступу к двоичному файлу в С#
    #34953485
bigbanka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ты так не шути, у меня две книги)), и там огромными буквами написано что С)), короче на том коде, на котором исходник моей проги))
...
Рейтинг: 0 / 0
Вопрос по произвольному доступу к двоичному файлу в С#
    #34953514
Фотография Tshamіl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bigbankaТы так не шути, у меня две книги)), и там огромными буквами написано что С)), короче на том коде, на котором исходник моей проги))
Ну так а что конкретно не получается? Применить fgetpos() и fsetpos()?
...
Рейтинг: 0 / 0
Вопрос по произвольному доступу к двоичному файлу в С#
    #34953518
bigbanka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, не понимаю как их применить.
...
Рейтинг: 0 / 0
Вопрос по произвольному доступу к двоичному файлу в С#
    #34953521
bigbanka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
с fseek() все понятно, указал имя файла, указал сколько байт, указал от куда смещаться, с fgetpos fsetpos(), не могу разобраться((
...
Рейтинг: 0 / 0
Вопрос по произвольному доступу к двоичному файлу в С#
    #34953620
Фотография Tshamіl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы много не писать приведу сразу пример из мсдн, думаю с помощью него ты разберешься с этими методами:
Код: plaintext
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.
/* FGETPOS.C: This program opens a file and reads
 * bytes at several different locations.
 *
 * Place this code in a file called FGETPOS.C and then 
 * put the file in your project directory.
 */

#include <stdio.h>

void main( void )
{
   FILE   *stream;
   fpos_t pos;
   char   buffer[ 20 ];

   if( (stream = fopen( "fgetpos.c", "rb" )) == NULL )
      printf( "Trouble opening file\n" );
   else
   {
      /* Read some data and then check the position. */
      fread( buffer, sizeof( char ),  10 , stream );
      if( fgetpos( stream, &pos ) !=  0  )
         printf( "fgetpos error" );
      else
      {
         fread( buffer, sizeof( char ),  10 , stream );
         printf( "10 bytes at byte %I64d: %.10s\n", pos, buffer );
      }

   /* Set a new position and read more data */
   pos =  140 ;
   if( fsetpos( stream, &pos ) !=  0  )
      printf( "fsetpos error" );

   fread( buffer, sizeof( char ),  10 , stream );
   printf( "10 bytes at byte %I64d: %.10s\n", pos, buffer );
   fclose( stream );
   }
}
...
Рейтинг: 0 / 0
Вопрос по произвольному доступу к двоичному файлу в С#
    #34957747
bigbanka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Слушай, можешь показать как это будет выглядеть применительно к моему коду, я уже голову всю поломал((. Относительно примера я чет тоже не понял, что там вообще происходит? сначало получают с помощью fgetpos 10, потом тупо меняю на 140, и что происходит? Короче полный Ахтунг((. Пойду утоплюсь нафиг))
...
Рейтинг: 0 / 0
Вопрос по произвольному доступу к двоичному файлу в С#
    #34957987
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bigbankaпотом тупо меняю на 140, и что происходит?очевидно, pos присваивается занчение 140.
...
Рейтинг: 0 / 0
Вопрос по произвольному доступу к двоичному файлу в С#
    #34958045
bigbanka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну это всем ясно что при pos=140, pos присваивается 140))))
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопрос по произвольному доступу к двоичному файлу в С#
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]