c语言 高手进 !!!急!!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/14 00:21:51
从文本文件(里面全部是字符)读入它的全部字符 并把它赋给一个字符数组 要求对这个字符数组动态分配内存
不能用string.h类函数 并且能计算出数组的大小 (字符个数)

我的程序

#include "stdafx.h"
#include "stdlib.h"
int main(int argc, char* argv[])
{
FILE *filep;
char file[10];
char *p;
int i=5,j;
printf("请输入文件名\n");
scanf("%s",file);
filep=fopen(file,"r");
if((filep=fopen(file,"r"))==NULL)
{
printf("不能打开\n");
}

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<i;j++)
{
printf("%c",p[j]);
}
printf("\n");

fclose(filep);

return 0;

i和 指针p不能同时初始话 哪个放前面都有问题 而且我希望i 数完后 再带回 上面的 分配内存 也没有实现

请教高手 指教!!

我是C初学者

满意有加分!!

应该根据文件的大小,来申请内存。
请参考我写的例子:

#include <stdio.h>
#include <stdlib.h>

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 <stdio.h>

int getsize(FILE *fp)
{
int size = 0;
while ( !feof(fp) )
size++, fgetc(fp);
rewind(fp); //将文件指针移到文件开始
return size;
}

int main(int argc, char