我正在创建一个 DataStage 并行例程,它是从 IBM(以前称为 Ascential)DataStage 中调用的 C 或 C++ 函数。如果传入的字符串之一长度为零,则失败。如果我把它放在函数的第一行:
return strlen(str);
然后它为将空值传入 str 的调用返回 0。但是,如果我将其放在第一行...
if (strlen(str)==0) {return 0;}
然后它不会返回并进入无限循环
我很困惑——它在测试工具中运行良好,但在 DataStage 中却不行。
也许 DataStage 将空字符串传递给 C 例程的方式有些奇怪?
int pxStrFirstCharList(char *str, char *chars )
{
if (strlen(str)==0) {return 0;}
if (strlen(chars)==0) {return 0;}
int i = 0;
//Start search
while (str[i]) //for the complete input string
{
if (strchr(chars, str[i]))
{
return i+1;
}
++i;
}
return 0;
}