Advertisement
Guest User

Untitled

a guest
May 23rd, 2015
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.04 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int getLen(int num);
  6.  
  7. int main(int argc, char * argv[])
  8. {
  9.     if (argc != 2)
  10.     {
  11.         fprintf(stderr, "Il numero degli argomenti passati non è corretto!\n");
  12.         exit(EXIT_FAILURE);
  13.     }  
  14.  
  15.     FILE * file;
  16.  
  17.     file=fopen(argv[1], "a+");
  18.     if (file==NULL)
  19.     {
  20.         fprintf(stderr, "Errore nell'apertura file\n");
  21.         exit(EXIT_FAILURE);
  22.     }
  23.  
  24.     int ritorno, righe, colonne, totali;
  25.  
  26.     ritorno=fscanf(file, "%d %d\n", &righe, &colonne);
  27.     if (ritorno==0)
  28.     {
  29.         fprintf(stderr, "Errore nella fscanf\n");
  30.         exit(EXIT_FAILURE);    
  31.  
  32.     }
  33.  
  34.     fprintf(stderr, "Righe:%d  Colonne:%d\n", righe, colonne);  //DEBUG controllo se salva bene righe e colonne
  35.  
  36.     totali=righe*colonne;  
  37.  
  38.     fprintf(stderr, "Totali:%d\n", totali);     //DEBUG controllo se salva bene i totali
  39.    
  40.     int i, tmp, len=0, lennum, controllo, spazi=0;
  41.  
  42.     char *output;
  43.  
  44.     output=malloc(sizeof(char));
  45.     if (output==NULL)
  46.     {
  47.         fprintf(stderr, "Errore nella malloc\n");
  48.         exit(EXIT_FAILURE);
  49.  
  50.     }
  51.  
  52.     for (i=0; i<totali; i++)
  53.     {
  54.         ritorno=fscanf(file, "%d", &tmp);
  55.         if (ritorno==0)
  56.         {
  57.             fprintf(stderr, "Errore nella fscanf\n");
  58.             exit(EXIT_FAILURE);    
  59.  
  60.         }
  61.  
  62.         lennum=getLen(tmp);
  63.        
  64.         fprintf(stderr, "Lennum di %d è %d\n", tmp, lennum);   //DEBUG controllo se salva bene lennum
  65.  
  66.         output=realloc(output, (len+lennum+1));
  67.        
  68.         if (spazi==0)
  69.         {
  70.         controllo=snprintf(output+len, (lennum+1), "%d ", tmp);
  71.         if (controllo>=(lennum+1) || controllo<0)
  72.         {
  73.             fprintf(stderr, "Errore nella snprintf\n");
  74.             exit(EXIT_FAILURE);
  75.         }
  76.         len=len+lennum+1;
  77.         spazi++;
  78.         } else {
  79.         controllo=snprintf(output+len, (lennum+1), "%d\n", tmp);
  80.         if (controllo>=(lennum+1) || controllo<0)
  81.         {
  82.             fprintf(stderr, "Errore nella snprintf\n");
  83.             exit(EXIT_FAILURE);
  84.         }
  85.         len=len+lennum+1;
  86.         spazi=0;
  87.         }
  88.  
  89.     }
  90.  
  91.     printf("%s\n", output);
  92.  
  93.     controllo=controllo;
  94.  
  95.     return EXIT_SUCCESS;
  96.  
  97. }
  98.  
  99. int getLen(int num)
  100. {
  101.     int len=0; 
  102.     while(1)
  103.     {
  104.         if (num<10)
  105.         {
  106.             len+=1;
  107.             break;
  108.         }
  109.     num=num/10;
  110.     len+=1;
  111.    
  112.     }
  113.     return len;
  114.  
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement