应该根据文件的大小,来申请内存。
请参考我写的例子:
#include
#include
int main()
{
FILE *fp;
int flen;
char *p;
fp = fopen ("1.txt","rb");
if(fp==NULL)
{
return 0;
}
fseek(fp,0L,SEEK_END);//定位到文件末尾
flen=ftell(fp); //求文件大小
p=(char *)malloc(flen+1); //分配文件大小那么大的内存
if(p==NULL)
{
fclose(fp);
return 0;
}
fseek(fp,0L,SEEK_SET); //定位到文件头
fread(p,flen,1,fp); //一次性读取文件
p[flen]=0; //把结尾清0
printf("%s\n",p);
fclose(fp);
free(p);
return 0;
}
//#include "stdafx.h"
#include "stdlib.h"
#include
int getsize(FILE *fp)
{
int size = 0;
while ( !feof(fp) )
size++, fgetc(fp);
rewind(fp); //将文件指针移到文件开始
return size;
}
int main(int argc, char* argv[])
{
FILE *filep;
char file[10];
char *p;
int i,j;
printf("请输入文件名\n");
scanf("%s",file);
filep=fopen(file,"r");
if((filep=fopen(file,"r"))==NULL)
{
printf("不能打开\n按任意键退出\n");
system("pause");
exit(0);
}
i = getsize(filep);
p=(char*)malloc(i*sizeof(char));
if (p==NULL)
{
return(-1);
}
for(i=0;!feof(filep);i++)
{
p[i]=fgetc(filep);
}
for(j=0;j{
printf("%c",p[j]);
}
printf("\n");
printf("一共有 %d 个字符\n", i);
fclose(filep);
system("pause");
return 0;
}
我给你改了下下。。。看合不合你意?