netlib.narod.ru | < Назад | Оглавление | Далее > |
Иногда бывает удобно выйти из цикла не по результату проверки, осуществляемой в начале или в конце цикла, а каким-то другим способом. Такую возможность для циклов for, while и do-while, а также для инструкции switch предоставляет инструкция break. Эта инструкцияот вызывает немедленный выход из самого внутреннего из объемлющих ее циклов и инструкций switch.
Приведенная ниже функция trim удаляет из строки завершающие пробелы, табуляции и символы новой строки. Инструкция break используется в ней для выхода из цикла, когда встречается первый символ, отличающийся от названных.
/* trim: удаление завершающих пробелов, табуляций и символов новой строки */ int trim(char s[]) { int n; for (n = strlen(s)-1; n >= 0; n--) if (s[n] != ' ' && s[n] != '\t' && s[n] != '\n') break; s[n+1]='\0'; return n; }
Функция strlenвозвращает длину строки. Цикл for просматривает строку в обратном порядке, начиная с конца, до тех пор, пока не встретится символ, отличный от пробела, табуляции и новой строки. Цикл прерывается, как только обнаружен такой символ, или когда n станет отрицательным (т.е. вся строка будет просмотрена). Убедитесь, что функция ведет себя правильно и в случаях, когда строка пуста или состоит только из символов-разделителей.
Инструкция continue в чем-то похожа на break, но применяется гораздо реже. Она вынуждает ближайший объемлющий ее цикл (for, while или do-while) начать следующую итерацию. Для while и do-while это означает немедленный переход к проверке условия, а для for — к изменению счетчика цикла. Инструкцию continue можно применять только в циклах, но не в инструкции switch. Если инструкция continue находится внутри инструкции switch, расположенной внутри цикла, она вызовет переход к следующей итерации этого цикла.
Вот фрагмент программы, обрабатывающей только неотрицательные элементы массива a (отрицательные пропускаются):
for (i = 0; i < n; i++) { if (a[i] < 0) /* пропуск отрицательных элементов */ continue; ... /* обработка положительных элементов */ }
Инструкцию continue часто используют в случаях, когда следующая за инструкцией часть цикла сложна, а замена условия в цикле на противоположное и введение еще одного уровня приводят к слишком большому числу уровней вложенности.
netlib.narod.ru | < Назад | Оглавление | Далее > |