程序不能正确输出结果或者程序无法运行
在调试的时候系统提示
系统提示报错Program received signal SIGSEGV,Segmentation fault
SIGSEGV是是当一个进程执行了一个无效的内存引用,或发生段错误时发送给它的信号。
意思是程序接受一个无效的指针地址,Segmentation fault即是提示我们去注意定义指针的符号。
例如scanf函数中没有添加&,调试时也会出现此错误
Program received signal SIGSEGV Segmentation fault错误的主要原因是指针和数组的原因,以及需要开辟内存的操作,该错误往往是无法访问内存。
在这次错误中是在循环中没有重新初始化指针,后将代码中的指针初始化放到循环中就解决了问题
void Read_File(struct Card*wDeck) //读出数据
{
FILE *pfr=fopen("C:\\Users\\ASUS\\Desktop\\计算机作业\\扑克牌游戏\\存储.txt","rb+");
if(pfr==NULL)
{
printf("打开失败");
exit(0);
}
Card *pointer;
int m,i;
char flag='y';
do
{
pointer=wDeck;
fread(pointer,sizeof(Card),52,pfr);