繁体   English   中英

C:使用read系统调用从stdin读取double

[英]C: Reading double from stdin using read system call

我问如何使用read系统调用从stdin读取double,int或任何其他类型。

到目前为止我做了什么:

long val ;
ssize_t r;
r = read(STDIN_FILENO,&val,sizeof(long));
printf("%ld\n",val);

任何想法?

您不清楚是否要读取(a)long,double,int或其他的ASCII表示(即字符串“0.12345”,或(b)该值的二进制表示。

如果你想做(a),你需要使用fscanf 见上面的答案。

如果你想做(b),你的代码看起来正确。 你有什么'糟糕的结果'? 你检查了r<0 ,然后查看errno或使用perror()

我怀疑问题是你想做(a),但编码为(b)。

使用stdioscanf

http://linux.die.net/man/3/scanf

这将更容易使用原始读取

编辑

阅读你最初的期望,然后尝试其他人,直到你受到打击。

最好还是重新设计用户界面,以免出现这个问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM