Сохранение И с использованием возвращаемого значения memchr, если?"if (ptr = memchr (str1, '4', sizeof (str1)))"? - PullRequest
1 голос
/ 21 сентября 2011

Проблема: если вы сделаете

if ( ptr = memchr( str1, '4', sizeof(str1) ) )
{
    // do stuff using ptr
}

, тогда вы будете входить и делать "вещи" каждый раз.Но если вы просто сделаете

if ( memchr( str1, '4', sizeof(str1) ) )
{
    // would do stuff but don't have ptr!
}

, вы войдете, но у вас не будет указателя на то, где «4» находится внутри str1.Мне нужно оценить и сделать вещи для нескольких возможностей, например, если «4», иначе, если «7», еще, если «1», и т. Д.

Итак, каков наиболее эффективный метод для оценки, если этот символ существует,и использовать указатель, возвращенный, если он делает?Конечно, это не

if ( memchr( str1, '4', sizeof(str1) ) )
{
    ptr = memchr( str1, '4', sizeof(str1) )
    // do stuff using ptr
}

Ответы [ 2 ]

3 голосов
/ 21 сентября 2011

Оператор присваивания возвращает присваиваемое значение, что (наряду с правой ассоциативностью) объясняет, почему a=b=c; работает. Итак, ваш первый пример будет работать просто отлично.

2 голосов
/ 21 сентября 2011

сделайте memchr и присвойте возвращаемое значение, затем сделайте if.как это:

ptr = memchr(str1, '4', sizeof(str1));
if (ptr)
{
  // do stuff using ptr;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...