小编Mcs*_*Mcs的帖子

stdin中的文件结束

关于这个的问题已经在C中被问到 文件结尾(EOF), 但它仍然没有完全解决我的问题.

EOF在任何数据流中都没有意义stdin,例如,如果我有一些data.txt文件,fgetc()将读取所有字符并返回到文件末尾并返回-1.

我不明白的是EOFin 的概念stdin.如果我使用getchar()它,它将等待我输入一些东西,所以如果没有写入,文件结束,(EOF)不会自动返回?

因此,它是只有用户可以调用EOFstdinCtrl+ Z?如果是这样,那么EOFin的一些用途是stdin什么?我想它会告诉程序继续读取,直到用户调用文件结束?是这个吗?

谢谢

c console stdin eof

12
推荐指数
2
解决办法
2万
查看次数

在node.js中读写json文件

好吧,我有这个json文件:

{   
    "joe": {
        "name": "joe",
        "lastName": "black"
    },

    "matt": {
        "name": "matt",
        "lastName": "damon"
    }
}
Run Code Online (Sandbox Code Playgroud)

我想添加一个node.js的人:

{   
    "joe": {
        "name": "joe",
        "lastName": "black"
    },

    "matt": {
        "name": "matt",
        "lastName": "damon"
    },

    "brad": {
        "name": "brad",
        "lastName": "pitt"
    }
}
Run Code Online (Sandbox Code Playgroud)

使用下面的代码我试图读取json文档,解析它,添加人,然后再次写入文件.但是,在写入函数中无法识别已解析的对象(jsonObj).我知道它与事件循环有关,但我不知道如何解决它.我尝试使用process.nextTick,但无法使其工作.

var jsonObj;

fs.open('files/users.json', 'r+', function opened(err, fd) {
    if (err) {
        throw err;
    }
    var readBuffer = new Buffer(1024),
        bufferOffset = 0,
        readLength = readBuffer.length,
        startRead = 0; 
    fs.read(fd, readBuffer, bufferOffset, readLength, startRead, function read(err, readBytes) {
        if …
Run Code Online (Sandbox Code Playgroud)

javascript json node.js

2
推荐指数
1
解决办法
4304
查看次数

为什么用EOF清空stdin

关于刷新stdin有很多问题,我的不是关于如何刷新它,而是关于以下函数的含义:

while((c = getchar()) != '\n' && c != EOF);
Run Code Online (Sandbox Code Playgroud)

我试图想一想为什么以及如何在这个函数中使用EOF来清空stdin的场景?用户键入内容并按回车键,我们清空缓冲区直到找到输入,EOF在哪里进入?

谢谢

编辑:非常感谢第一个答案和第二个评论,它回答了我的问题并完全满足了我.

除了我们从一个我们有真实EOF的文件管道我们的输入的场景,这几乎回答了我的问题,我仍然不明白为什么我们在任何其他情况下需要EOF这样的函数.用户只能在终端的行开头调用EOF,因此不能用于清空缓冲区.

c

1
推荐指数
1
解决办法
482
查看次数

标签 统计

c ×2

console ×1

eof ×1

javascript ×1

json ×1

node.js ×1

stdin ×1