Я создаю параллельную подпрограмму DataStage, которая представляет собой функцию C или C ++, которая вызывается из IBM (ранее Ascential) DataStage.Сбой, если одна из переданных строк имеет нулевую длину.Если я помещу это в самую первую строку функции:
return strlen(str);
, то она возвращает 0 для вызовов, которые передают пустые значения в str.Если я поставлю это в первой строке, однако ...
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;
}