2016-10-10 3 views
0

Так что я написал эту программу, используя coderunner,зсапЕ предотвращает программу от выполнения

#include <stdio.h> 

int main() 
{ 
    int num1, num2; 

    scanf("%d%d", &num1, &num2); 

    if (num1 > num2) 
     printf("The min is:%d\n ", num2); 
    else 
     printf("The min is:%d\n ", num1); 
return 0; 
} 

Проблема заключается в том, что программа не побежит. Он продолжает показывать это, а затем он останавливается через некоторое время:

running

Удаление зсапЕ исправили проблему, я попробовал другие программы, использующие зсапЕ и это было прекрасно. Есть идеи?

+1

Вы пытались ввести некоторые входные и посмотреть, что происходит? –

+0

Программа на самом деле не запускается, поэтому я не могу ничего ввести. – Demha

+2

работает для меня после ввода двух чисел. Как '22 23' –

ответ

2

Как вы ожидаете, scanf() для интерпретации, например. 123 или 1232 как два целых числа? Скорее всего, все цифры, которые вы вводите, «съедаются» первым %d, а затем scanf() ждет еще второго.

Вы должны использовать некоторое разделение, или какой-либо нечисловой характер между ними:

scanf("%d/%d", &num1, &num2); 

Это говорит scanf() ожидать косую черту между этими двумя числами. Разумеется, вы могли бы просто использовать пробелы (без каких-либо строк формата, как указано в комментариях).

Кроме того, вы должны проверить возвращаемое значение, прежде чем полагаться на цифры:

if(scanf("%d %d", &num1, &num2) == 2) 
{ 
} 
+0

Есть ли способ позволить программе использовать два целых числа с двумя цифрами без нажатия пользователем чего-либо? (Например, пробел или ввод) – Demha

+0

@Demha По определению 'scanf' ожидает ввода, отформатированного определенным образом, то есть ваш пользователь должен будет знать формат, который вы ожидаете. Если вы хотите обрабатывать произвольный ввод, вам нужно будет использовать 'fgets' с' stdin' и проанализировать входную строку с помощью 'sscanf', проверив возвращаемое значение для ошибок. 'scanf' - это своего рода ограниченная комбинация этих двух функций, и, используя их отдельно, вы можете выбрать способ обработки плохо сформированного ввода. – djrollins

+0

@djrollins Спасибо за объяснение! – Demha

Смежные вопросы