in effetti c'è...solo che è in asm...ok usiamo quello che è + performante :sexpulp:
---
codice:
#include <gcrypt.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#define TMPBUFFER_SIZE 1024
int main(int argc, char **argv) {
FILE *fd;
struct stat file_info;
char * buffer;
char * tmpbuffer;
int res, count=0;
// Controllo i parametri passati
if (argc < 2) {
fprintf(stderr, "Usage: %s <file>\n", *argv);
return 1;
}
// Leggo le informazioni sul file
res = stat(argv[1], &file_info);
if(res < 0) {
fprintf(stderr, "Unable to stat file %s\n", argv[1]);
return 1;
}
// Apro il file
fd = fopen(argv[1], "r");
if (fd == NULL) {
fprintf(stderr, "Couldn't open file!\n");
return 1;
}
// Imposto il buffer per il file
buffer = malloc(file_info.st_size+1);
if (buffer == NULL) {
fprintf(stderr, "No memory avaiable!\n");
return 1;
}
// Imposto il buffer per i blocchi di memoria temporanea
tmpbuffer = malloc(TMPBUFFER_SIZE+1);
if (tmpbuffer == NULL) {
fprintf(stderr, "No memory avaiable!\n");
free(buffer);
return 1;
}
while((res=fread(tmpbuffer, sizeof(char), TMPBUFFER_SIZE, fd)) > 0) {
/*
while(*tmpbuffer) {
*buffer = *tmpbuffer;
buffer++;
tmpbuffer++;
}
count += res;
*/
strcat(buffer, tmpbuffer);
}
free(tmpbuffer);
printf("START\n%s\nEND\n", buffer);
fclose(fd);
// Elimino i buffer di memoria
printf("1\n");
free (buffer);
printf("1\n");
}
mi da segfault quando faccio il free di tmpbuffer
che faccio?