#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);
}
}