2016-09-05 4 views
-4

Я хочу напечатать две строки в консолипечати две строки

int k = 3; 
for (int i = 0; i < k; i++) 
{ 
    printf("\ra: %d\n\rb: %d", i*2, i*3); 
} 

Я хочу, чтобы получить этот результат:

a: 4 
b: 6 

Но я получаю:

a: 0 
a: 2 
a: 4 
b: 6 
+0

Что значит «в реальном времени»? Программа печатает то, что вы говорите, чтобы печатать. – Lundin

+0

Определяет, что ваш термин * в реальном времени * не означает для большинства, что это означает для вас. Я * думаю * вы пытаетесь показать только две строки, при этом счетчики визуально прокручивают значения, наконец, заканчивая свой опубликованный желаемый результат. Насколько я был близок? – WhozCraig

ответ

1

Причина, почему вы получаете тот вывод, что у вас есть только один \r перед, но \n\r между а и Ь в:

printf("\ra: %d\n\rb: %d", i*2, i*3); 

Каждый цикл, курсор возвращается к началу линии, где Ь и пишет над ней, с новым значением для:

1st 2nd  3rd run 
a=0 a=0 a=0 
b=0 a=2 a=2 
     b=3 a=4 
       b=6 

так как это быстро, вы можете увидеть только последний. Не совсем понятно, что вы хотите сделать, но если вам нужен только выход последнего прогона, вы можете написать printf после цикла:

for (int i = 0; i < k; i++) 
{ 
... 
} 
printf("\r\na: %d\n\rb: %d", i*2, i*3); 
+0

Кстати, вы также можете использовать '\ t' для закладки между этими двумя переменными и держать их в одной строке. Таким образом, каждый раз, когда вы печатаете, вся вещь написана над 'printf (" \ ra:% d \ t \ tb:% d ", i * 2, i * 3);' Некоторые консоли поддерживают escape-коды типа '" \ 33 [1A ", который на самом деле является кодом для стрелки вверх на клавиатуре. –

0

Вы могли бы сделать если внутри внутри:

if (i * 2 == 4) 
    printf ... 
+0

Нет. Я хочу напечатать ТОЛЬКО две строки, и я хочу, чтобы «b» был обновлен. – ARTAGE

1

Если изменить цикл в

for (int i = 2; i < k; i++) 

это напечатает результат, который вы просили.

a: 4 
b: 6 
+0

Я знаю, но я хочу, чтобы «a» и «b» обновлялись в цикле. А в консоли было всего две строки (строки). – ARTAGE

+1

Я напечатал две строки (строки) в консоли, точно так же, как вы просили. Пожалуйста, спросите об этом в вопросе. 'a' и' b' не могут быть обновлены в цикле, потому что они не являются переменными. –

+0

Я имею в виду, что после цикла в консоли у меня должно быть только две строки. Но эти строки обновляются в цикле. – ARTAGE