javascript - nodejs 中的 C scanf 等价物

标签 javascript node.js

如果我想从 C 中的输入流读取我写 scanf., NodeJS 中是否有等效的方法来做同样的事情?

例如,这是 C

中的代码
int n,
    m,
    i;

scanf("%d", &n);

for (i = 0; i < n; i++) {
    scanf("%d", &m);

    ............

}

这是我在 Node 中的起点...TODO 指示我被卡住的地方:

process.stdin.resume();
process.stdin.setEncoding("ascii");

process.stdin.on("data", function (input) {
    var n = +input;
    for (var i = 0; i < n; i++) {
        // TODO
    }
});

最佳答案

对于初学者来说,在 NodeJS 中为可读流调用 scanfdata 事件是不等价的。在 NodeJS 示例中,您需要解析收到的输入 block 。

您可以通过将 on 方法的主体替换为一个简单的方法来检查这些 block 是如何发送给您的:

process.stdout.write('onData: ' + input + '\n');

考虑到 input 如何包含您的数据,您需要使用某种方法提取感兴趣的字符串,然后使用 parseInt。假设每个 input 有 1 个整数,也许是解决您问题的一种天真的方法:

var n = 0;
var m = 0;
var state = 0;
process.stdin.on('data', function (input) {
    switch (state)
    {
    case 0:
        // we're reading 'n'
        n = parseInt(input.trim(), 10);
        state++;
        break;

    default:
        // we're reading 'm'
        m = parseInt(input.trim(), 10);

        if (state++ == n)
        {
            // we've read every 'm'
            process.exit();
        }
        break;
    }
});

我不太喜欢这种将数据传输到 NodeJS 事件循环的方法,您应该改为查看命令行参数、配置/输入文件或其他一些方法。

关于javascript - nodejs 中的 C scanf 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14238187/

相关文章:

javascript - 在 Node.js 中导出 Mongoose 方法(TypeError : Cannot read property 'name' of null)

javascript - 意外的标识符 - JS Node

javascript - 未调用 AJAX 成功函数

javascript - 如何获取最小和最大日期

javascript - 哪种 JavaScript MVC/MVVM 对 SEO 友好?

php - 为什么在 laravel 中使用 npm?

mysql - 使用 Node 和 Mysql

javascript - 如何提高动画的移动性能?

javascript - stopPropagation如何取消preventDefault?

javascript - Strava-V3 和 Javascript es6 生成器 = 不兼容?