Ruby有两种引用标准输入的方法:STDIN常量和$stdin全局变量.
除了我可以分配一个不同的IO对象,$stdin因为它不是一个常量(例如在我的孩子中重新定向IO之前),STDIN和之间的区别是$stdin什么?我什么时候应该在我的代码中使用每个?
如果我重新分配$stdin,它会影响STDIN吗?
这也适用于STDOUT/ $stdout和STDER/ $stderr?
假设我在C中有以下代码:
double var;
scanf("%lf", &var);
printf("%lf", var);
printf("%f", var);
Run Code Online (Sandbox Code Playgroud)
它从stdin变量'var'读取,然后在stdout'var'中打印两次.我理解你是如何从stdin读取双变量的,但我的问题是:
我试图接受来自Kotlin控制台的输入但很难,因为我对语法不太确定.
我从主要开始
fun main(args: Array<String>) {
}
Run Code Online (Sandbox Code Playgroud)
在此之后我应该输入什么?我知道println()并且readline()参与其中但我不知道如何构建它们.
目标:提示用户输入一个数字,输入的数字乘以6,程序将结果返回到控制台显示.
说我有
process.stdin.setEncoding('utf8');
var myString = '';
Run Code Online (Sandbox Code Playgroud)
有什么区别
process.stdin.on('readable', function() {
myString += process.stdin.read();
});
Run Code Online (Sandbox Code Playgroud)
和
process.stdin.on('data', function(chunk) {
myString += chunk;
});
Run Code Online (Sandbox Code Playgroud)
如果stdin结束后输入字符串相同,它们会给我相同的myString
每种方法的最佳做法是什么?谢谢
我有以下简单的代码:
import java.io.*;
class IO {
public static void main(String[] args) {
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
System.out.println(userInput);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
----------
1. ERROR in io.java (at line 10)
while ((userInput = stdIn.readLine()) != null) {
^^^^^^^^^^^^^^^^
Unhandled exception type IOException
----------
1 problem (1 error)roman@roman-laptop:~/work/java$ mcedit io.java
Run Code Online (Sandbox Code Playgroud)
有人有什么想法吗?我只是想简化总和网站上给出的代码(这里).我过度简化了吗?
是否可以在批处理文件中使用管道stdin流?
我希望能够将一个命令的输出重定向到我的批处理文件process.bat列表中,这样:
C:\>someOtherProgram.exe | process.bat
Run Code Online (Sandbox Code Playgroud)
我的第一次尝试看起来像:
echo OFF
setlocal
:again
set /p inputLine=""
echo.%inputLine%
if not (%inputLine%)==() goto again
endlocal
:End
Run Code Online (Sandbox Code Playgroud)
当我用type testFile.txt | process.bat它测试时,它会反复打印出第一行.
还有另外一种方法吗?
我写了下面的代码来从终端窗口读取一行,问题是代码陷入无限循环.行/句子的长度是未定义的,因此我计划将其分成几部分读入缓冲区,然后将其连接到另一个字符串,该字符串可以通过realloc相应的方式进行扩展.有人可以发现我的错误或建议更好的方法来实现这个目标吗?
#include <stdio.h>
#include <string.h>
#define BUFFERSIZE 10
int main (int argc, char *argv[])
{
char buffer[BUFFERSIZE];
printf("Enter a message: \n");
while(fgets(buffer, BUFFERSIZE , stdin) != NULL)
{
printf("%s\n", buffer);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 在将代码从Python 2移植到Python 3时,我在从标准输入读取UTF-8文本时遇到了这个问题.在Python 2中,这很好用:
for line in sys.stdin:
...
Run Code Online (Sandbox Code Playgroud)
但Python 3期望来自sys.stdin的 ASCII ,如果输入中有非ASCII字符,我会收到错误:
UnicodeDecodeError:'ascii'编解码器无法解码字节..位置..:序号不在范围内(128)
对于常规文件,我会在打开文件时指定编码:
with open('filename', 'r', encoding='utf-8') as file:
for line in file:
...
Run Code Online (Sandbox Code Playgroud)
但是如何指定标准输入的编码?其他SO帖子建议使用
input_stream = codecs.getreader('utf-8')(sys.stdin)
for line in input_stream:
...
Run Code Online (Sandbox Code Playgroud)
但是,这在Python 3中不起作用.我仍然得到相同的错误消息.我正在使用Ubuntu 12.04.2,我的语言环境设置为en_US.UTF-8.
我正在尝试创建一个创建mysql用户和数据库的bash脚本,但我找不到将sql提供给mysql的方法,我正在尝试使用这种格式:
mysql < echo "query"
Run Code Online (Sandbox Code Playgroud)
但这不起作用,请参阅下面的示例:
mysql --host=localhost --user=user --password=password < echo "CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'jakdJxct8W';
CREATE DATABASE IF NOT EXISTS 'testuser_dev' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON 'testuser_dev' . * TO 'testuser'@'localhost';
CREATE DATABASE IF NOT EXISTS 'testuser_qa' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON 'testuser_qa' . * TO 'testuser'@'localhost';"
Run Code Online (Sandbox Code Playgroud)
如何用查询提供mysql?
read()在Unix中使用系统调用读取用户输入的可能方法是什么.我们如何使用字节逐字节读取stdin read()?