Je travaille sur mon premier projet dans mon premier cours de programmation C et je me perds avec des pointeurs. Nous devons modifier les bitmaps de diverses manières et j'ai du mal à comprendre comment je peux utiliser les pointeurs de fichiers pour saisir les données d'octets que je veux utiliser et manipuler. Je connais l'en-tête du fichier bitmap et la structure d'en-tête DIB ainsi que le décalage d'octets pour les valeurs qui les composent. Cependant, j'ai de la difficulté à comprendre comment sauvegarder chacune de ces valeurs pour les utiliser plus tard avec des pointeurs de fichiers. Puisque c'est pour un projet, je ne veux pas demander trop d'aide. Voici mon code à ce jour et divers moyens que j'ai tenté de capturer des parties de l'en-tête:Analyse des octets d'un en-tête de bitmap et enregistrement avec des pointeurs de fichier
int main(int argc, const char * argv[]){
FILE *fp;
char buff[2]; //only trying '2' to try and capture 'BM' at start of file.
fp = fopen(argv[1], "r+b");
fseek(fp, 0, SEEK_END);
long fsize = ftell(fp);
rewind(fp);
// this is where I test what to do but can't get it correct
unsigned short filetype = fgetc(fp);
printf("First letter of filetype %c\n", filetype); //prints 'B' which is awesome
//Now I do not understand how to capture both the 'BM'.
//I've changed to use the fread as follows:
fread(buff, sizeof(char), 2, fp);
printf("Captured bytes with fread %s\n", buff) //this prints 4 char's and not 2?
fclose(fp);
return 0;
}
J'ai aussi testé simple while pour parcourir le fichier entier et imprimer chaque caractère jusqu'à EOF
est rencontrée à l'aide fgetc
qui travaillé. Donc, je suppose qu'à chaque appel de fgetc
il change l'emplacement de la position actuelle des octets en position actuelle + 1.
Je suppose que je ne comprends pas complètement comment le pointeur de fichier peut être utilisé pour enregistrer de nombreux octets en une seule variable stockée. J'ai également essayé fseek
et fgets
en vain.
J'apprécierais n'importe quelle aide et contribution que je peux obtenir de la communauté ici.
Pour évaluer votre compréhension actuelle: Qu'est-ce qu'une chaîne de caractères en C? – immibis
Tableau de caractères @immibis – Pwrcdr87
Comment des fonctions comme 'printf' savent-elles où se trouve la fin? – immibis