У меня проблема с функциями scanf()
и printf()
во фрагменте кода, подобного следующему:
#include <stdio.h>
int main() {
int a;
int b;
int c;
scanf("%d %d", &a, &b);
while (c >= 2) {
c = a % b;
a = b;
b = c;
printf ("%d\n", c);
}
return 0;
}
То, что я ожидаю, происходит в коде моего брата Code :: Block, чтобы программа ожидала ввода от stdin
, а затем выводила на stdout
результаты, по одному на строку, пока он не достигнет наивысшего общего делителя.
Однако, когда я набираю его в vi
и затем скомпилируйте его с помощью gcc
и запустите программу из моего терминала, программа корректно принимает входные данные, но завершает работу, не возвращая ничего в stdout
.
Если я закомментирую строку scanf()
и жестко закодирую любое число с переменными a
и b
, все работает как положено.
Я пытаюсь выучить C и прочитал основную c документацию по функциям, но не могу помочь чтобы понять этот тип поведения. Я пытался поставить setbuf(stdout, NULL)
до объявления переменных, но ничего не изменилось.
Может кто-нибудь дать мне подсказку?