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

时间:2014-01-13 22:23:08

标签: c double system-calls

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

到目前为止我做了什么:

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

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您不清楚是否要读取(a)long,double,int或其他的ASCII表示(即字符串" 0.12345",或(b)二进制表示形式那个价值。

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

如果你想做(b),你的代码对我来说是正确的。结果是什么&#39;你正拥有的?您是否检查过r<0,然后查看errno或使用perror()

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

答案 1 :(得分:0)

使用stdioscanf

请参阅http://linux.die.net/man/3/scanf

这将更容易使用原始读取

修改

阅读您最初期待的内容然后尝试其他内容,直到您受到欢迎。

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