Pers.narod.ru. Алгоритмы. Выделяем динамическую память под файл |
Условие задачи:
Выделить память динамически для хранения произвольного файла, имя файла задается пользователем. В случае, если память выделить невозможно, вывести соответствующее сообщение
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <alloc.h>
void main() {
FILE *fp;
unsigned char name[128];
printf ("\nEnter file name: ");
fgets (name,128,stdin);
name[strlen(name)-1]='\0';
fp=fopen(name,"r+b");
if (fp==NULL) {
printf ("\Can't open file %s",name);
exit (1);
}
fpos_t len;
fseek (fp,0,SEEK_END);
fgetpos (fp,&len);
unsigned char far *fdata=(unsigned char far *)farmalloc(len);
if (fdata==NULL) {
printf ("\Can't allocate %ld bytes",len);
exit (2);
}
unsigned char c;
unsigned long k=-1;
fseek (fp,0,SEEK_SET);
while (1) {
fread (&c,1,1,fp);
fdata[++k]=c;
if (feof(fp)) break;
}
for (unsigned long i=0; i<k; i++) putch(fdata[i]);
getchar();
}
|
|