Outils pour utilisateurs

Outils du site


allegro:code_memfile

**Ceci est une ancienne révision du document !** ----

A PCRE internal error occured. This might be caused by a faulty plugin

<file c mem_maker.c> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #define FORMAT "0x%2.2x" #define BYTES_PER_LINES 20 int main(int argc, char *argv[]) { int fd_in, fd_out, i, val; char value[BYTES_PER_LINES]; char suffix[] = "};"; // 2 bytes char prefix[] = "char file_array[] = {"; // 21 bytes char cont [] = "0xFF"; // 4 bytes - la valeur sera changée char sep [] = ", "; // 2 bytes char eol [] = "\n\t"; // 2 byte if (argc != 3) { printf("%s, convertit un fichier binaire en un tableau de char utilisable dans un programme\n", argv[0]); puts("Ce programme attend 2 arguments de la ligne de commande :"); puts("\t- l'@ de la source\n\t- l'@ pour l'output"); return -1; } if (!(fd_in = open(argv[1], O_RDONLY))) return -1; if (!(fd_out = open(argv[2], O_WRONLY|O_CREAT))) return -1; if (read(fd_in, value, 1) != 1) goto cleanup; sprintf(cont, FORMAT, value); write(fd_out, prefix, 21); write(fd_out, cont, 4); while ((val = read(fd_in, value, BYTES_PER_LINES)) > 0) { write(fd_out, sep, 2); write(fd_out, eol, 2); for (i=0; i<val; i++) { sprintf(cont, FORMAT, *(value+i)); write(fd_out, cont, 4); if (i != val-1) write(fd_out, sep, 2); } } write(fd_out, suffix, 2); cleanup: close(fd_in); close(fd_out); return 0; } </file>

allegro/code_memfile.1327185245.txt.gz · Dernière modification: 2012/01/21 23:34 par mrhide