尝试通过使用fopen和包含FILE类型的结构打开文件时,我一直收到分段错误。新来的C很抱歉,如果这是一个菜鸟问题。 结构代码:
typedef struct _FileInternal {
FILE* fp;
char mem[2];
} FileInternal;
// file handle type
typedef FileInternal* File;
打开文件的代码:
File open_file(char *name) {
File a;
fserror=NONE;
// try to open existing file
a->fp=fopen(name, "r+");
if (! a->fp) {
// fail, fall back to creation
a->fp=fopen(name, "w+");
if (! a->fp) {
fserror=OPEN_FAILED;
return NULL;
}
}
return a;
}
尝试 档案f; F =的fopen(" newfile.dat&#34); 返回错误
非常感谢任何帮助!
答案 0 :(得分:1)
@CreatedDate
protected ZonedDateTime createdAt;
@LastModifiedDate
protected ZonedDateTime modifiedAt;
是一种指针类型,它使File
成为指针。永远不会初始化a
以指向有效的a
结构,因此解除引用它可能会导致seg错误。
答案 1 :(得分:0)
您之前没有进行内存分配就已取消引用指针,为解决此问题,请执行以下操作:
class TimePeriod:
def __init__(self, *units):
self.seconds = Seconds(sum(unit.to_seconds() for unit in units))
def __repr__(self):
seconds = self.seconds
weeks = Weeks.from_seconds(seconds)
seconds -= weeks.to_seconds()
days = Days.from_seconds(seconds)
seconds -= days.to_seconds()
hours = Hours.from_seconds(seconds)
seconds -= hours.to_seconds()
minutes = Minutes.from_seconds(seconds)
seconds -= minutes.to_seconds()
seconds = Seconds(seconds)
return ' '.join(f'{unit} {unit.__class__.__name__}' for unit in (weeks, days, hours, minutes, seconds) if unit)
def __str__(self):
return repr(self)