2014-02-19 35 views
1

我写了一套代码扫描值,并使用它们来测试中心极限定理。然而,当我以后使用的scanf我的节目,我输入的所有值运行我的程序没有进行到下一个代码行:这个问题是这样的:我的C代码没有响应后scanf语句

printf("*** DEMONSTRATION OF CENTRAL LIMIT THEOREM ***"); 
printf("Enter parameters for the distribution [a b] ==> "); 
scanf("%f %f",&a,&b); 
printf("Enter distribution to display [1=data, 2=mean] ==> "); 
scanf("%d",&option); 
printf("Enter number in each group      ==> "); 
scanf("%d",&group); 
printf("Enter number of samples of groups    ==> "); 
scanf("%f",&times); 
printf("are we here yet"); 
这些printf的后

和scanf程序开始做计算。但是当我编译(成功)后运行程序时。看起来我的代码卡在scanf后(“%f”,&次);

行“我们还在这里”永远不会被打印,这意味着程序没有通过scanf。我没有做过很多C编程,这似乎对我来说真的很奇怪,有人可以找出程序为什么没有经过scanf行(“%f”,&次);我真的不懂它

+0

'printf()'调用后会发生什么?你确定这不仅仅是因为你没有在它的末尾加入''\ n'',或者打电话给'fflush(stdout)'? –

+0

printf()之后我有一个if语句来检查option的输入值,如果这个选项是1,它会经过一系列的算法,试图通过纯数据显示中心极限定理,如果选项== 2它显示中心极限定理通过数据的平均值。但问题是在scanf后没有任何显示 – nanobots

+0

当我运行该程序时,它就像这样 输入参数分配[ab] ==> 0.2 0.7 输入分配显示[1 = data,2 = mean] == > 2 在每个组中输入数字==> 10 输入组样本数量==> 100 – nanobots

回答

2

终端的输入/输出是用C语言进行行缓冲的,输出不会显示,直到输出换行符,或者调用fflush(stdout),或者程序正常终止,所有缓冲区都是无论如何都要冲洗。更改:

printf("are we here yet"); 

到:

printf("are we here yet\n"); 

或:

printf("are we here yet"); 
fflush(stdout); 

,你应该看到您的输出。

+0

谢谢我意识到,scanf是不会导致使用后的问题。因为scanf之后的行确实已经打印这是我的代码中的其他内容--algorithm part grrrr我现在要尝试修复它 – nanobots