VC++中运行程序建立二进制文件,老是出现这样的问题【附图】
在vc++6.0中运行程序时,老是出现这种情况,不止这一个程序是这样!请问是什么原因导致的?谢谢大师指导……
VC++6.0 内存异常
[解决办法]
#include <stdio.h>
#include <stdlib.h>
#define N 50
main()
{
FILE *fp;
int i,j;
int a[]={32,64,23,16,90,61,99,0,0,0},b[N];
if((fp=fopen("d:\\tfile\\006.dat","wb+"))==NULL)
{
printf("文件打开失败!\n");
exit(1);//需要stdlib.h文件
}
else
{
for(i=0;i<10;i++)
if(fwrite(&a[i],sizeof(int),1,fp)!=1)printf("write file ERROR !\n");
}
i=0;j=0;
rewind(fp);
fread(&b[j],sizeof(int),1,fp);
while(b[j]!=0)
{
j++;
fread(&b[j],sizeof(int),1,fp);
}
for(i=0;i<j;j++)//error j++应该是i--,否则,死循环,最后内存就跳台了
{
printf("%d\t",&b[i]);
}
printf("\n");
fclose(fp);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define ARRAY_SIZE(a) (sizeof(a)/ sizeof(a[0]))
int main()
{
int a[]={32,64,23,16,90,61,99,0,0,0};
char const* fn = "006.dat";
FILE* fp=fopen(fn,"a");
unsigned int read_cnt, i;
if(NULL == fp)
{
printf("文件打开失败!\n");
exit(1);
}
if(ARRAY_SIZE(a) != fwrite(a,sizeof(int), ARRAY_SIZE(a) ,fp))
{
printf("write file ERROR !\n");
}
fclose(fp);
fp = fopen(fn, "r");
if(NULL == fp)
{
printf("文件打开失败!\n");
exit(1);
}
while((read_cnt = fread(a,sizeof(int), ARRAY_SIZE(a),fp)) > 0)
{
for(i = 0; i < read_cnt; ++i)
{
printf("%d\t",a[i]);
}
}
printf("\n");
fclose(fp);
}