经过将近10年的时间,我开始编写C代码。我正在教姐姐,不幸的是,在Ubuntu上一个简单的兴趣程序中,我陷入了一个非常基本的scanf()函数。
我的程序没有出现任何编译错误,但是它没有在屏幕上显示任何内容
代码如下:
#include <stdio.h>
int main()
{
int p,n;
float r,si;
printf("enter values of p,n,r");
scanf("%d %d %f",&p,&n,&r);
si = p*n*r/100;
printf("%f" , si);
return 0;
}
答案 0 :(得分:2)
当尝试printf()
和scanf()
一个又一个时,这是一个常见的“问题”。操作系统缓冲区stdin
和stdout
为了提高性能,仅在必要时刷新它们。您可以在fflush(stdout);
之后立即调用printf()
来显式刷新stdout。
请参见C/C++ printf() before scanf() issue。
您的代码最终看起来像
#include <stdio.h>
int main()
{
int p,n;
float r,si;
printf("enter values of p,n,r\n");
fflush(stdout); // Force stdout to be flushed
scanf("%d %d %f",&p,&n,&r);
si = p*n*r/100;
printf("%f" , si);
return 0;
}
答案 1 :(得分:0)
我认为您只是没有正确查看控制台。输出“ si”将与您的第一个printf在同一行上打印,因为您没有在其末尾插入换行符。
答案 2 :(得分:0)
您的代码在我的Ubuntu系统中非常适合我,这可能是由于您使用的IDE错误所致。
尝试通过以下方式在->fetchColumn(0)
中运行代码:-
ae = AE(config.get('move', 'aet'), port=pynetport, scu_sop_class=QueryRetrieveSOPClassList)
assocstore = ae.associate(configworkstationaddress, int(configworkstationport))
*stuff*
dsstore = dcmread(dcmfilenames[0])
status = assocstore.send_c_store(dsstore)
print(status)
assocstore.release()
。pip uninstall pyzmq
pip install pyzmq
(导航到桌面)。Ubuntu
来编译代码。program.c
运行程序。答案 3 :(得分:0)
当你说
在屏幕上不显示任何内容
(添加了重点),我的意思是说,当您运行它时,它不会显示您正在打印的数据输入提示。这是因为标准输出在连接到终端时默认情况下是行缓冲的-它会在打印输出之前将其缓冲在内存中,直到缓冲区被填满或(因为 line 已缓冲)输出换行符,或关闭流(包括程序正常终止时的时间)。
因此,导致显示提示的一种方法是在其后添加换行符:
printf("enter values of p,n,r\n");
另一种方法是使用自动添加换行符的输出函数:
puts("enter values of p,n,r");
如果您要确保即使没有发送换行符也要显示输出,则可以刷新流(在这种情况下为标准输出):
printf("enter values of p,n,r: ");
fflush(stdout);