【发布时间】:2017-02-08 07:04:27
【问题描述】:
这是我作为简单实验的一部分所做的事情;
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int fun()
{
int d=10;
write(1,(int*)d,sizeof(d));
}
int main()
{
int x;
fun();
read(1,(int*)x,4);
printf("x=%d\n",x);
return 0;
}
如您所见,我正在尝试通过 IO 流(IO 文件)stdout 访问 fun() 函数中的 d 的值;我也尝试使用stdin,但问题是x 值没有改变。 (我在在线 IDE 中尝试过。)但根据我的思路,它应该更改为 d 的值。
谁能帮我看看为什么它不这样做?
【问题讨论】:
-
请向我们展示输入和预期输出的示例。
-
即使你修复了调用序列(将指针传递给
read()和write()),你也无法阅读fun()写的内容。是的,你经常可以从标准输出中读取——但除非你做了一些花哨的事情(I/O 重定向等),否则从标准输出中读取与从标准输入中读取是一样的,这意味着它将读取你在键盘上键入的内容.您写入标准输出的内容将显示在屏幕上(除非您进行了一些 I/O 重定向)并且不会成为输入数据的一部分。 -
@JonathanLeffler 怎么做?
-
@SurajJain:怎么办?
-
@SurajJain 到
read()你做了什么write()你需要它们都连接到同一个东西的东西,例如管道、套接字或文件。所以我建议你open一个文件,write它,seek回到开头,最后read你写的。