Как я могу создать оператор if в цикле for, который прерывает цикл for в c?

#arrays #c #loops #if-statement #break

#массивы #c #циклы #if-statement #перерыв

Вопрос:

Я работаю над некоторым кодом на C. Я пытаюсь создать цикл for с оператором if внутри него. И я хочу, чтобы этот оператор if прерывал цикл for.

         for(int i = 0; i != n; i  ){
            if(dashes[i] == '-'){
                break;
            }
            stillPlaying = 2;
        } 
 

По сути, я хочу, чтобы программа проверяла массив «тире», если она находит тире, прерывает цикл for и продолжает с остальной частью кода. Если он не находит тире, цикл for прерывается, и для воспроизведения по-прежнему устанавливается значение 2. Есть ли способ сделать это?

Комментарии:

1. Вы пробовали опубликованный вами код? break Содержащийся в нем оператор завершит for цикл.

2. Как вы думаете, что делает break ? У вас есть рабочий код. Вы даже не пытались его запустить?

3. Что это значит? «Если он не находит тире, цикл for прерывается» Вы имеете в виду, что вы достигаете конца массива, и цикл не break завершается?

4. Я попробовал следующий код, но он не работал так, как предполагалось в моей программе, я предполагаю, что это означает, что он не сработал из-за чего-то другого. Спасибо.

Ответ №1:

Измените порядок действий

     stillPlaying = 2;
    for (int i = 0; i != n; i  ) {
        if (dashes[i] == '-') {
            stillPlaying = -1;
            break;
        }
    }
    // stillPlaying is either -1 or 2 here
    // -1 if a '-' was found in dashes
 

Ответ №2:

Кажется, вы имеете в виду следующее

 int i = 0;

while ( i < n amp;amp; dashes[i] != '-' ) i  ;

if ( i == n ) stillPlaying = 2;
 

Ответ №3:

Я думаю, что код должен работать нормально, как только наступит перерыв, и цикл будет завершен.

Ответ №4:

Я протестировал его без проблем.

 #include <stdio.h>

char dashes[10] = {'1', '2', '3', '-', '4'};
int stillPlaying = 0;
int n = 5;

int main()
{
    for(int i = 0; i != n; i  ){
        if(dashes[i] == '-')
            break;
        stillPlaying = 2;
        printf("dashes:%c stillPlaying:%dn", dashes[i], stillPlaying);
    } 
}