程序运行却出现core jump,求指导
本想写一个文件读写的程序,我用fwrite写入,但在fread读取时 却出现了错误
求指导
#include <stdio.h>
#include <stdlib.h>
#define MAX_NAME 40
#define MAX_NUM 40
#define MAX_EMAIL 70
#define MAX_ADDRESS 100
#define MAX_CARDS 10
struct card {
char name[MAX_NAME];
char number[MAX_NUM];
char email[MAX_EMAIL];
char address[MAX_ADDRESS];
};
int main()
{
struct card my_cards[MAX_CARDS];
FILE *pcards;
int count;
int size;
int filecount;
filecount=0;
count=MAX_CARDS;
size=sizeof(struct card);
pcards=fopen("card.dat","r");
rewind(pcards);
while(filecount<MAX_CARDS)
{
fread(&my_cards[filecount],size,count-filecount,pcards);
printf("%d:%s\n%s\n%s\n%s\n",filecount,my_cards[filecount].name,my_cards[filecount].number,my_cards[filecount].email,my_cards[filecount].address);
filecount++;
}
return 0;
}
~
[解决办法]
进程意外退出会在当前目录下产生‘core’文件或形如‘core.数字’的文件比如‘core.1234’
使用命令
gdb 运行程序名 core或core.数字
进入gdb然后使用bt命令
可以查看进程意外退出前函数调用的堆栈,内容为从上到下列出对应从里层到外层的函数调用历史。
如果进程意外退出不产生core文件,参考“ulimit -c core文件最大块大小”命令
[解决办法]
是你的rewind()函数这里导致的。
pcards=fopen("card.dat","r");之后要做NULL check
pcards=fopen("card.dat","r");
if(pcards == NULL) {
exit(0);
}
rewind(pcards);
fread(&my_cards[filecount],size,count-filecount,pcards);
// 循环读这里 ,你第一次已经全部读完了啊,不明白