====== Différences ====== Ci-dessous, les différences entre deux révisions de la page.
|
allegro:code_memfile [2012/03/23 14:03] mrhide |
allegro:code_memfile [2015/01/17 03:32] (Version actuelle) mrhide |
||
|---|---|---|---|
| Ligne 6: | Ligne 6: | ||
| #include <string.h> | #include <string.h> | ||
| #define FORMAT "0x%2.2x" | #define FORMAT "0x%2.2x" | ||
| + | #define suffix "};" // 2 bytes | ||
| + | #define prefix "char file_array[] = {" // 21 bytes | ||
| + | #define sep ", " // 2 bytes | ||
| + | #define eol "\n\t" // 2 byte | ||
| #define BYTES_PER_LINES 20 | #define BYTES_PER_LINES 20 | ||
| Ligne 12: | Ligne 16: | ||
| int i, cpt=1; | int i, cpt=1; | ||
| size_t val; | size_t val; | ||
| - | char value[BYTES_PER_LINES]; | + | unsigned char value[BYTES_PER_LINES]; |
| - | char suffix[] = "};"; // 2 bytes | + | unsigned char cont[] = "0xFF"; // 4 bytes - la valeur sera changée |
| - | char prefix[] = "char file_array[] = {"; // 21 bytes | + | unsigned char buflen[25]; |
| - | char cont [] = "0xFF"; // 4 bytes - la valeur sera changée | + | |
| - | char sep [] = ", "; // 2 bytes | + | |
| - | char eol [] = "\n\t"; // 2 byte | + | |
| - | char buflen[25]; | + | |
| if (argc != 3) { | if (argc != 3) { | ||
| printf("%s, convertit un fichier binaire en un tableau de char utilisable dans un programme\n", argv[0]); | 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("Ce programme attend 2 arguments de la ligne de commande :"); | ||
| - | puts("\t- l'@ de la source\n\t- l'@ pour l'output"); | + | puts("\t- le chemin de la source\n\t- le chemin pour l'output"); |
| return -1; | return -1; | ||
| } | } | ||
| Ligne 31: | Ligne 31: | ||
| if (fread(value, sizeof(char), 1, in) != 1) goto cleanup; | if (fread(value, sizeof(char), 1, in) != 1) goto cleanup; | ||
| - | sprintf(cont, FORMAT, value); | + | sprintf(cont, FORMAT, value[0]); |
| fwrite(prefix, sizeof(char), 21, out); fwrite(cont, sizeof(char), 4, out); | fwrite(prefix, sizeof(char), 21, out); fwrite(cont, sizeof(char), 4, out); | ||
| Ligne 38: | Ligne 38: | ||
| cpt += val; | cpt += val; | ||
| for (i=0; i<val; i++) { | for (i=0; i<val; i++) { | ||
| - | sprintf(cont, FORMAT, *(value+i)); | + | sprintf(cont, FORMAT, value[i]); |
| fwrite(cont, sizeof(char), 4, out); | fwrite(cont, sizeof(char), 4, out); | ||
| if (i != val-1) fwrite(sep, sizeof(char), 2, out); | if (i != val-1) fwrite(sep, sizeof(char), 2, out); | ||
| Ligne 47: | Ligne 47: | ||
| fwrite(buflen, sizeof(char), strlen(buflen), out); | fwrite(buflen, sizeof(char), strlen(buflen), out); | ||
| - | cleanup: | ||
| fclose(in); fclose(out); | fclose(in); fclose(out); | ||
| + | return 0; | ||
| + | |||
| + | cleanup: | ||
| + | fclose(in); fclose(out); | ||
| + | fputs("conversion failed\n", stderr); | ||
| return 0; | return 0; | ||
| } | } | ||