Вирішено Повернення до запуску програми jaime_ta_mere - OpenClassrooms

Питання ? Не хвилюйтеся, ми допоможемо вам !

jaime_ta_mere

Привіт, я роблю програму на C, і я хочу, щоб в кінці її відобразився вибір перезапустити програму або вийти з неї.

Тільки тут, я не знаю, як зробити перший варіант: поверніться до початку, я хотів би знати, чи є якийсь Goto, який ми могли б використовувати між кількома циклами ?

Будь ласка, як повернутися до початку моєї програми ?

синтаксис приблизно такий:

цикл програми
інструкції.
>

вибір кинути або продовжити


наперед дякую

Щоб повернутися до запуску програми, ви можете використовувати цикл do/while:

int вибір;
// інші змінні

printf ("Ви хочете почати спочатку? (1 = ТАК, 2 = НІ):");
scanf ("% d", & вибір);

В основному я створюю змінну, яка дорівнює нулю під час циклу, і коли ми натискаємо на quit, вона стає 1 ?


Я спробую цей крок

Цитата: Sirius88

Рішення, я б не називав це "оптом".

Тим паче, що зовсім не впевнений, що filouhb бачив вивчення персонажів (?).

Цитата: filouhb

В основному я створюю змінну, яка дорівнює нулю під час циклу, і коли ми натискаємо на quit, вона стає 1 ?

Я спробую цей крок

Це правильно. Повідомте нам новини !

Цитата

Тільки невелике роз'яснення, яке я хотів надати:
Goto справді існує мовою C, але ДУЖЕ настійно не рекомендується, оскільки це вплине на читабельність програми. Я дав би вам документ, що підтверджує це, але він дуже довгий, і це все, що вам слід пам’ятати.
(І так, у мене теж не раз було спокуса використовувати його.).
В іншому випадку я був би на думку скласти великий цикл, який включає всю вашу програму (після оголошення руки, звичайно), і якщо користувач бажає вийти, ви керуєте таким чином, що ваш цикл стає неможливим. Стилю:


Гаразд, я не надто звертав увагу на помилки, але я зазвичай використовую цей метод. Це, мабуть, не найкраще.

Ваш код можна трохи спростити, уникаючи тотологій:

Таким чином, ми вже уникаємо змінної "value" (яка також не була оголошена, але вона є хитрою, оскільки ви вказуєте, що ви написали цей код у 2-2 ^^), а також двох непотрібних тестів (але я, як подарунок, роблю ще два я замість xD).
Крім того, ми змушуємо користувача вводити правильні дані (ніколи не довіряйте введенню користувачем), а також дозволяє використовувати дуже поширену систему O/N, якщо ви кодуєте в консолі.

Крім того, scanf - це дуже погана функція, я вважаю за краще створювати власну функцію за допомогою getchar і буфера дампа, але, привіт, справа не в цьому.

Після цього це найкращий метод, який я думаю (ну, робити все-таки краще в будь-якому випадку, я кажу про принцип циклу), враховуючи те, що goto потрібно заборонити (і справді досить нудно читати, де мій погляд зору очевидно).

@axelink: scanf не так вже й погано, якщо ми перевіримо його відгуки та звернемо увагу.

В іншому випадку, я вважаю, що поставити універсал - це лише поліпшення, щоб він не витрачав занадто багато пам'яті. В іншому випадку я не вважаю перерву перехідною, тому не рекомендував би її використовувати.