我问如何使用stdin
系统调用从read
读取double,int或任何其他类型。
到目前为止我做了什么:
long val ;
ssize_t r;
r = read(STDIN_FILENO,&val,sizeof(long));
printf("%ld\n",val);
有什么想法吗?
答案 0 :(得分:3)
您不清楚是否要读取(a)long,double,int或其他的ASCII表示(即字符串" 0.12345",或(b)二进制表示形式那个价值。
如果你想做(a),你需要使用fscanf
。见上面的答案。
如果你想做(b),你的代码对我来说是正确的。结果是什么&#39;你正拥有的?您是否检查过r<0
,然后查看errno
或使用perror()
。
我怀疑问题是你想做(a),但编码为(b)。
答案 1 :(得分:0)
使用stdio
和scanf
请参阅http://linux.die.net/man/3/scanf
这将更容易使用原始读取
修改强>
阅读您最初期待的内容然后尝试其他内容,直到您受到欢迎。
最好还是重新设计用户界面,以免出现此问题