我首先讀取二進制文件,當我讀取文件結尾時,文件關閉,視覺stdio 2013錯誤指針超過了邊界。當文件指針讀取文件的邊界?
FILE *fp;
fp = fopen("stu_manage.txt", "ab+");
fseek(fp,0L,SEEK_END);
long last = ftell(fp)/length;
long i = 0L;
rewind(fp);
struct student *node=(struct student*)malloc(sizeof(struct student));
for (; i < last; i++)
{
if (fread(&node[i], length, 1, fp) != 1)
{
printf("read conpletely");
break;
}
}
if (fp!=NULL)
fclose(fp);
當我把這裏的指針變化爲全局變量,這個錯誤就解決了,相當於指針在一定程度上陣列這裏無法運行,我覺得無法理解。
標準警告:請[不要轉換](http://stackoverflow.com/q/605845/2173917)'malloc()'和'C'中的系列的返回值。 – 2015-04-01 09:07:09
什麼是「長度」?它的定義在哪裏? – niyasc 2015-04-01 09:11:14
@SouravGhosh:總而言之,您不會隨時拋出'malloc()'的返回值,因爲:C中的 不是必需的; 在C++中它將是必需的,但在C++中,你甚至不使用'malloc()';) – dhein 2015-04-01 09:15:46