[英]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)。
使用stdio
和scanf
见http://linux.die.net/man/3/scanf
这将更容易使用原始读取
编辑
阅读你最初的期望,然后尝试其他人,直到你受到打击。
最好还是重新设计用户界面,以免出现这个问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.