Input/Output for lines of text: Difference between revisions

From Rosetta Code
Content added Content deleted
(Add Racket version)
Line 15: Line 15:
hello world
hello world
Pack my Box with 5 dozen liquor jugs</pre>
Pack my Box with 5 dozen liquor jugs</pre>

=={{header|C}}==
<lang C>
/*Abhishek Ghosh, 20th March 2014, Rotterdam*/

#include<stdlib.h>
#include<stdio.h>

#define LEN 100 /* Max string length */

int main()
{
char **list;
int num, i;
scanf("%d",&num);
list = (char**)malloc(num*sizeof(char*));
for(i=0;i<num;i++)
{
list[i] = (char*)malloc(LEN*sizeof(char));
fflush(stdin);
fgets(list[i],LEN,stdin);
}
printf("\n");
for(i=0;i<num;i++)
{
printf("%s",list[i]);
}
return 0;
}
</lang>


=={{header|D}}==
=={{header|D}}==

Revision as of 23:23, 19 March 2014

Input/Output for lines of text is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.

The first line contains the number of lines to follow, followed by that number of lines of text on STDIN. Output to STDOUT each line of input by passing it to a method as an intermediate step. The code should demonstrate these 3 things. See also Input/Output for Pairs of Numbers and File/Input and Output.

Sample input with corresponding output

Input

3
hello
hello world
Pack my Box with 5 dozen liquor jugs 

Output

hello
hello world
Pack my Box with 5 dozen liquor jugs

C

<lang C> /*Abhishek Ghosh, 20th March 2014, Rotterdam*/

  1. include<stdlib.h>
  2. include<stdio.h>
  1. define LEN 100 /* Max string length */

int main() { char **list; int num, i;

scanf("%d",&num);

list = (char**)malloc(num*sizeof(char*));

for(i=0;i<num;i++) { list[i] = (char*)malloc(LEN*sizeof(char)); fflush(stdin); fgets(list[i],LEN,stdin); }

printf("\n");

for(i=0;i<num;i++) { printf("%s",list[i]); }

return 0; } </lang>

D

<lang d>void main() {

   import std.stdio, std.conv, std.string;
   enum doStuff = (in string line) => line.write;
   foreach (_; 0 .. readln.strip.to!uint)
       doStuff(readln.idup);

}</lang>

Java

<lang java>import java.util.Scanner;

public class Main { public static void doStuff(String word){ System.out.println(word); }

public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = Integer.parseInt(in.nextLine()); //doesn't use nextInt() so nextLine doesn't just read newline character for(int i=0; i<n; i++){ String word = in.nextLine(); doStuff(word); } } }</lang>

Perl 6

<lang perl6>$*OUT.say($*IN.get) xx $*IN.get;</lang>

Python

<lang python>try: input = raw_input except: pass

def do_stuff(words): print(words)

linecount = int(input()) for x in range(linecount): line = input() do_stuff(line)</lang>

Racket

Translation of: Python

<lang Racket>#lang racket (define (do-stuff str)

 (displayln str))
(define line-count (read)) ;reads all kind of things

(define line-count (string->number ;only reads numbers

                   (string-trim
                    (read-line)))) 

(for ([i (in-range line-count)])

 (do-stuff (read-line)))</lang>

REXX

Programming note: this method was chosen because the standard input may be identical to the standard output. <lang rexx>/*REXX program outputs a number of lines from the default input file. */

  1. =linein() /*the number of lines to follow. */
 do j=1  for #;   x.j=linein();  end  /*obtain input lines from stdin. */

call stuff /*call STUFF routine for output. */ exit /*stick a fork in it, we're done.*/ /*──────────────────────────────────STUFF routine───────────────────────*/ stuff: do k=1 for #; call lineout ,x.k; end; return /*output.*/</lang>

Ruby

<lang ruby>def do_stuff(word) puts word end

t = gets.to_i for i in 1..t do word = gets do_stuff(word) end</lang>

Tcl

<lang tcl>proc do_stuff {line} {

   puts $line

}

foreach - [lrepeat [gets stdin] dummy] {

   do_stuff [gets stdin]

}</lang>