| Language | Input | Output | Notes |
|---|---|---|---|
| C | scanf("%s", &x) |
printf("%s", x) |
Use getline for strings |
| C++ | x >> cin |
cout << x |
|
| Python | x = sys.stdin.readline() |
print(x) |
See also raw_input and input |
| JavaScript | process.stdin.on('data', func) |
console.log(x) |
Reading from stdin is always async and only available in NodeJS. |
printf uses format specifiers that follow %[flags][width][.precision][length]specifier
scanf with “promote” a float to a double, so you can use %f for both, but in C99 you may explicitly use %lf for a double.
There are various C functions to read data from a stream:
scanf reads any data, terminating at whitespace, newlines or EOFgets (deprecated) reads only character data, terminating at newlines or EOFfgets is the safer version of gets, requiring max numbers of characters, and works for any streamgetchar read a single charactergetline (POSIX) reads a string and returns a pointer to dynamically allocated memory with that stringgetdelim (POSIX) allow you to specify the delimiter – getline is equivalent to getdelim('\n')TIP: Beware of using scanf followed by a different function to read a string, as scanf will leave the newline in the stream buffer. The following call, e.g. fgets will encounter this newline and immediately return. You can use getchar to eat this newline first.
raw_input is similar to a getline but is only valid in Python 2.
Use sys.stdout.write for more control.
Remember to also use sys.stdout.flush to ensure buffer is written immediately.
Some quickies:
int(raw_input().strip())map(lambda x: int(x), raw_input().strip().split(' '))print(",".join(map(str, array)))
System.out for STDOUTSystem.in for STDIN// Read a string and integer from stdin
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
int num = scanner.nextInt();
scanner.close();
// Read until EOF
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int a = scanner.nextInt();
System.out.println(a);
}