我必须检查环境变量是否存在以及它是否为整数值。我有这段代码:
char *aux;
aux=getenv("MAX_OUTPUT");
if (aux==NULL || !(isInteger(aux))){
/*code*/
}
我会检测何时未使用 aux==NULL 定义它,以及它是否不是具有我定义的函数 (isInteger) 的整数。这行得通,问题是当变量存在但设置为空字符串时。有任何想法吗?提前致谢
最佳答案
应该为任何输入定义(或显式未定义)isInteger
的行为。保留 isInteger(NULL)
未定义的行为并非不合理,要求调用者传递有效的字符串指针。
正如 unwind 的回答所暗示的,isInteger
应该可能为空字符串返回 false (0)。
但是如果你想自己检查一个空字符串,你可以检查长度为0:
char *aux;
aux=getenv("MAX_OUTPUT");
if (aux==NULL || strlen(aux) == 0 || !(isInteger(aux))){
/*code*/
}
或者,等效地,您可以检查字符串的第一个(第 0 个)字符是否为终止空 '\0'
字符:
char *aux;
aux=getenv("MAX_OUTPUT");
if (aux==NULL || *aux == '\0' || !(isInteger(aux))){
/*code*/
}
*aux
也可以写成aux[0]
。
请注意,例如,这不会检查包含单个空白的 aux
:""
,但同样,isInteger
应该可能会处理。
假设 isInteger
行为合理,对于任何看起来像整数的字符串返回 true 结果,对于任何不是整数的字符串返回 false 结果(对于空指针或空指针可能具有未定义的行为)一个不指向有效字符串的指针),然后是:
if (aux == NULL || !isInteger(aux)) {
/* it's not an integer */
}
应该足够了。
关于在 C 中检查环境变量是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19959215/