假设我有一个"Passenger"结构,它有一个名称字段.
如果我这样做(就像我的书的语法显示):
fread(&passenger, sizeof(Passenger), 1, in_fp);
printf("%s", (*passenger).first_name)
Run Code Online (Sandbox Code Playgroud)
我遇到了分段错误,但如果我这样做:
fread( (char *)passenger, sizeof(Passenger), 1, in_fp);
printf("%s", (*passenger).first_name)
Run Code Online (Sandbox Code Playgroud)
从文件中读取的名称将被打印出来.
看起来好像'乘客'是一个指针.如果你带乘客,你将指针的地址传递给fread.当你施放它时,你告诉fread将它视为指向char缓冲区的指针而不是指向Passenger的指针.