|
|
|
Вопрос по произвольному доступу к двоичному файлу в С#
|
|||
|---|---|---|---|
|
#18+
Вопрос в том, как осуществить доступ к конкретному месту двоичного файла, указав с клавиатуры байты. Вся проблема в том, что файл может быть больше 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; } Очень нужна ваша помощь, сроки горят(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2007, 20:29:47 |
|
||
|
Вопрос по произвольному доступу к двоичному файлу в С#
|
|||
|---|---|---|---|
|
#18+
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; } Очень нужна ваша помощь, сроки горят(( Я даже незнаю с чего начать:) Вопрос по си шарпу а код на с++, так на каком тебе языке доступ к файлу получать нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2007, 20:35:19 |
|
||
|
Вопрос по произвольному доступу к двоичному файлу в С#
|
|||
|---|---|---|---|
|
#18+
Ты так не шути, у меня две книги)), и там огромными буквами написано что С)), короче на том коде, на котором исходник моей проги)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2007, 20:39:30 |
|
||
|
Вопрос по произвольному доступу к двоичному файлу в С#
|
|||
|---|---|---|---|
|
#18+
bigbankaТы так не шути, у меня две книги)), и там огромными буквами написано что С)), короче на том коде, на котором исходник моей проги)) Ну так а что конкретно не получается? Применить fgetpos() и fsetpos()? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2007, 21:08:09 |
|
||
|
Вопрос по произвольному доступу к двоичному файлу в С#
|
|||
|---|---|---|---|
|
#18+
Да, не понимаю как их применить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2007, 21:10:15 |
|
||
|
Вопрос по произвольному доступу к двоичному файлу в С#
|
|||
|---|---|---|---|
|
#18+
с fseek() все понятно, указал имя файла, указал сколько байт, указал от куда смещаться, с fgetpos fsetpos(), не могу разобраться(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2007, 21:12:55 |
|
||
|
Вопрос по произвольному доступу к двоичному файлу в С#
|
|||
|---|---|---|---|
|
#18+
Чтобы много не писать приведу сразу пример из мсдн, думаю с помощью него ты разберешься с этими методами: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2007, 23:15:52 |
|
||
|
Вопрос по произвольному доступу к двоичному файлу в С#
|
|||
|---|---|---|---|
|
#18+
Слушай, можешь показать как это будет выглядеть применительно к моему коду, я уже голову всю поломал((. Относительно примера я чет тоже не понял, что там вообще происходит? сначало получают с помощью fgetpos 10, потом тупо меняю на 140, и что происходит? Короче полный Ахтунг((. Пойду утоплюсь нафиг)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 12:06:35 |
|
||
|
Вопрос по произвольному доступу к двоичному файлу в С#
|
|||
|---|---|---|---|
|
#18+
bigbankaпотом тупо меняю на 140, и что происходит?очевидно, pos присваивается занчение 140. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2007, 12:58:43 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34953472&tid=2027769]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
210ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 548ms |

| 0 / 0 |
