#define MAX_SIZE (5)
int main()
{
int vector[MAX_SIZE] = {0};
int i;
memset(vector, 0xFF, sizeof(vector)); //sets all vector[i] to -1 on init;
for (i = 0; (i < MAX_SIZE) && (i?vector[i-1]:1) ; i++) //you can add the condition to break from the for loop here. This is more complicated but its just for demonstration.
{
printf("Number: ");
scanf_s("%d", &vector[i]);
}
system("pause");
return 0;
}
Приведенный выше пример кода демонстрирует использование условного выражения для циклов for в качестве средства разрыва цикла. Там троица предотвращает случай i = 0, приводящий к индексу вне границ, благодаря тому, как вы структурировали свой цикл. Лучший / более читаемый способ ниже:
#define MAX_SIZE (5)
int main()
{
int vector[MAX_SIZE] = {0};
int i;
memset(vector, 0xFF, sizeof(vector)); //sets all vector[i] to -1 on init;
for (i = 0; i < MAX_SIZE; i++)
{
printf("Number: %d\n", i);
scanf_s("%d", &vector[i]);
if(vector[i] == 0)
{
break;
}
}
//system("pause");
printf("Broke the loop when i was %d\n", i);
return 0;
}
Разница между ними, кроме читабельности, заключается в том, что я буду увеличиваться на один дополнительный раз в первом. Также убедитесь, что инициализированы все переменные, которые вы объявляете (все ваши векторные элементы являются мусором стека, набор записей 0xFF присваивает им все -1).