Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Apr 25th, 2012  |  syntax: C++  |  size: 1.33 KB  |  hits: 10  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <assert.h>
  4. #define MAXLINES    1024
  5. #define MAXLEN      2048
  6.  
  7. int read_lines (char ** lines,int nlines) {
  8.     char buffer [MAXLEN] ;
  9.     char * s = NULL ;
  10.     unsigned i = 0,j;
  11.    
  12.     while (!feof (stdin) && i < nlines) {
  13.  
  14.         memset (buffer,0,MAXLEN) ;
  15.         if (!fgets (buffer,MAXLEN,stdin))  // cia tiesiog getline i stdin gali nekreipt demesio        
  16.             break ;  
  17.         j = strlen (buffer) ;
  18.         s = malloc (j+1) ; // alokuojam atmintoies tiek kiek uzteks issaugot nuskaitytai eilutei
  19.         strcpy (s,buffer) ; // nukopujuoju nuskaityta eilute i alokuota atminti
  20.         lines [i] = s ; // priskiriu alokuotos atminties pointeri prie lines [i]
  21.         ++i ;
  22.     }
  23.     return i ;
  24. }
  25.  
  26. void print_lines (char ** lines,int nlines) {
  27.     int i ;
  28.     for (i = 0;i < nlines;++i) {
  29.         printf ("%s",lines [i]) ;  
  30.     }  
  31. }
  32.  
  33. void free_lines (char ** lines,int nlines) {
  34.     int i ;
  35.     for (i = 0;i < nlines;++i) {
  36.         free (lines [i]) ; // islaisvinam alokuota atminti
  37.     }      
  38. }
  39.  
  40.  
  41. int main () {
  42.     static char * lines [MAXLINES] ;
  43.     int nlines = 0 ;
  44.        
  45.     nlines = read_lines (lines,MAXLINES) ;
  46.    
  47.     print_lines (lines,nlines) ;
  48.     //free_lines (lines,nlines) ;
  49.    
  50.     getchar () ;
  51.    
  52.     return 0 ;
  53. }