【发布时间】:2011-11-19 21:04:08
【问题描述】:
我有一个任务,我需要从文件中读取一定数量的Foos。如果文件中的数据对于Foos 之一的格式不正确,有哪些常见的方式来指示(例如,stderr)应该更正Foos 中的哪一个?
我的代码如下所示:
Foo foos[50];
FILE *file = fopen(...);
int i;
for (i = 0; i < sizeof(foos); ++i)
{
if (readFoo(&foos[i], file) != 1)
break;
}
如果读取成功,readFoo 函数将返回1;如果不是,它会返回一个负数并向stderr 打印一个错误,它指定出了什么问题,但没有说明错误在哪里。我应该如何实现这个(干净),以便我也告诉用户i 的值?
在 C++ 中,我会在例外情况下执行此操作。在 C 语言中,我想过做这样的事情(readFoo 会在出现问题时相应地设置error):
/* These go in a source file */
const char *error = NULL;
const char error1[] = "Error 1 occurred.";
const char error2[] = "Error 2 occurred.";
const char *getLastError() {
return error;
}
还有什么其他方法可以解决这个问题?
【问题讨论】:
标签: c error-handling