在简单函数中处理C中可能出现的错误

在简单函数中处理C中可能出现的错误,c,error-handling,C,Error Handling,我有以下代码: // global variables count = 0; char arr[50][5]; main(){ // do something } init(){ count = 0; memset (arr, 0, sizeof(arr)); } 如果init()成功,我需要返回1,否则返回0。但是,我看不出init()在技术上是如何失败的。如何在init()中实现此错误处理程序?有两个问题: 如果不想返回任何内容,则无需返回任何内容,只需将函数设为v

我有以下代码:

// global variables
count = 0;
char arr[50][5];

main(){
   // do something
}

init(){
   count = 0;
   memset (arr, 0, sizeof(arr));
}
如果init()成功,我需要返回1,否则返回0。但是,我看不出init()在技术上是如何失败的。如何在init()中实现此错误处理程序?

有两个问题:

  • 如果不想返回任何内容,则无需返回任何内容,只需将函数
    设为void
  • 您不需要init函数,因为
    arr
    已经0初始化,因为它有静态存储(全局变量)
编辑 基本上main()可以修改count和arr,有时我需要修改 使用init()重新初始化全局变量

如果以后可以调用该函数,将其称为“reset”、“reinit”、“clear”等将非常有用。“init”使读者认为在开始时只调用了一次

根据写操作,我必须在init()中返回1或0,具体取决于 关于是否有错误

在这种情况下,只需说:

/* XXX No other return code is possible. */
return 0;

哦,我忘了提到这是一个家庭作业问题。基本上main()可以修改count和arr,在某个时刻,我需要使用init()重新初始化全局变量。根据写的内容,我必须在init()中返回1或0,这取决于是否有错误……所以memset总是工作的?我是否应该反复检查一下self。建议?在这种情况下是否可能出现分段错误?@Mariska如果
memset
失败,那么它会灾难性地失败(例如,进程崩溃),通常是因为它没有被正确调用。我认为重新检查数组以查看
memset
是否完成了它的工作没有任何价值。