Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int getLen(int num);
- int main(int argc, char * argv[])
- {
- if (argc != 2)
- {
- fprintf(stderr, "Il numero degli argomenti passati non è corretto!\n");
- exit(EXIT_FAILURE);
- }
- FILE * file;
- file=fopen(argv[1], "a+");
- if (file==NULL)
- {
- fprintf(stderr, "Errore nell'apertura file\n");
- exit(EXIT_FAILURE);
- }
- int ritorno, righe, colonne, totali;
- ritorno=fscanf(file, "%d %d\n", &righe, &colonne);
- if (ritorno==0)
- {
- fprintf(stderr, "Errore nella fscanf\n");
- exit(EXIT_FAILURE);
- }
- fprintf(stderr, "Righe:%d Colonne:%d\n", righe, colonne); //DEBUG controllo se salva bene righe e colonne
- totali=righe*colonne;
- fprintf(stderr, "Totali:%d\n", totali); //DEBUG controllo se salva bene i totali
- int i, tmp, len=0, lennum, controllo, spazi=0;
- char *output;
- output=malloc(sizeof(char));
- if (output==NULL)
- {
- fprintf(stderr, "Errore nella malloc\n");
- exit(EXIT_FAILURE);
- }
- for (i=0; i<totali; i++)
- {
- ritorno=fscanf(file, "%d", &tmp);
- if (ritorno==0)
- {
- fprintf(stderr, "Errore nella fscanf\n");
- exit(EXIT_FAILURE);
- }
- lennum=getLen(tmp);
- fprintf(stderr, "Lennum di %d è %d\n", tmp, lennum); //DEBUG controllo se salva bene lennum
- output=realloc(output, (len+lennum+1));
- if (spazi==0)
- {
- controllo=snprintf(output+len, (lennum+1), "%d ", tmp);
- if (controllo>=(lennum+1) || controllo<0)
- {
- fprintf(stderr, "Errore nella snprintf\n");
- exit(EXIT_FAILURE);
- }
- len=len+lennum+1;
- spazi++;
- } else {
- controllo=snprintf(output+len, (lennum+1), "%d\n", tmp);
- if (controllo>=(lennum+1) || controllo<0)
- {
- fprintf(stderr, "Errore nella snprintf\n");
- exit(EXIT_FAILURE);
- }
- len=len+lennum+1;
- spazi=0;
- }
- }
- printf("%s\n", output);
- controllo=controllo;
- return EXIT_SUCCESS;
- }
- int getLen(int num)
- {
- int len=0;
- while(1)
- {
- if (num<10)
- {
- len+=1;
- break;
- }
- num=num/10;
- len+=1;
- }
- return len;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement