私はDataStage並列ルーチンを作成しています。これは、IBM(以前のAscential)DataStage内から呼び出されるCまたはC++関数です。渡された文字列の1つが長さがゼロの場合は失敗します。これを関数の最初の行に置くと、次のようになります。
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;
}