您需要返回两条信息 - 号码,以及该号码是否有效的指示。一种方法是更改函数的签名以指示它是否返回任何内容,如果返回,则将该值粘贴到变量中。这是一个如何做到这一点的例子:
// This function returns 1 or 0.
// 1 indicates success; 0 indicates failure
// If your compiler is up to C99 standard, use "bool" instead of "int" below
int getTime(struct * theInfo, int *result) {
if(theInfo != NULL){
*result = theInfo->waitTime;
return 1;
} else{
// result stays unchanged
return 0;
}
}
现在您可以像这样使用这个新功能:
int res;
if (getTime(&myInfo, &res)) {
printf("getTime returned %d\n", res);
} else {
printf("getTime Patron is nonexistent\n");
}
当您不需要返回完整的数字范围时,可以使用不太通用的替代方法。例如,如果您的函数返回的有效时间始终为正数,您可以采用使用负数来指示存在错误的约定。这种方法也是有效的,但它更多地依赖于约定,因此您的代码的读者需要查看您的函数文档以了解发生了什么。