1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
Есть функция проверяющяя является ли её первый аргумент закрывающим тегом для второго аргумента. В первом сравнении я хочу проверить аргументы, а заодно передвинуться на один символ вперёд, но second почему-то не увеличивается. Что я не так делаю?
int isclose (char *first, char *second) { if (*(first++) != '<' && *(second++) != '<') // Проверяю являются ли аргументы тегами вообще return 0;
if (*(first++) != '/') return 0;
while (*(first++) && *(second++)) if (*first != *second) return 0;
Как только значение выражения становится известным (а значение FALSE && что_угодно уже известно, это FALSE в любом случае), вычисление выражения прекращается. То есть, до второго сравнения дело даже не доходит...
Кстати, конкретно в твоем случае && - это ошибка. Для того, чтоб уйти из функции, достаточно, чтоб ОДИН из ее аргументов не начинался с '<', то есть, поставь ||, и в этом случае (в первом условии) у тебя будет все нормально. Дальше, в цикле while все-таки придется переделать... Например, так:
while (*first && *second) if (*first++ != *second++) return 0;
Да, спасибо, опять глупая ошибка, прям как с тем калькулятором...
Кстати, уменя проблема с программой, где используюется список (ошибка сегментирования), а в gdb тяжело работать с адресами, есть ли какие нибудь альтернативы или плагины к нему облегчающие это.