Il est possible d’écrire moins de 1 octet dans un fichier

Pour autant que je sache, la plus petite unité de C est un byte . D’où vient cette contrainte? CPU?

Par exemple, comment puis-je écrire un nibble ou un bit dans un fichier?

non, vous ne pouvez pas … les fichiers sont organisés en octets, c’est la plus petite donnée que vous puissiez sauvegarder.

Et, en fait, cet octet occupera plus d’un octet d’espace en général. Selon le système d’exploitation, le type de fichier système, etc., tout ce que vous enregistrez sous forme de fichier utilise au moins un bloc. Et la taille du bloc varie en fonction du système de fichiers que vous utilisez. Ensuite, ce 1-bit sera écrit en 1-octet et peut occuper jusqu’à 4ko de votre disque.

Dans Wikipedia, vous pouvez lire quelque chose sur l’octet étant la plus petite unité de données de nombreux ordinateurs.

En fait, c’est un caractère – byte n’est pas un type C standard.

La contrainte provient du standard C et est tautologique: char est le plus petit type complet en C car il est défini en tant que tel, et les tailles de tous les autres types sont définies en tant que multiples de la taille de char (dont la taille est toujours 1 ).

Maintenant, le nombre de bits dans un caractère peut varier d’une plate-forme à l’autre. Le nombre de bits tend finalement à être défini par le matériel, même si la plupart des systèmes utilisent actuellement des caractères de 8 bits. char est censé représenter la plus petite unité de mémoire adressable (encore une fois, par définition).

De plus, les données sont écrites dans des fichiers situés dans des secteurs (environ 512 octets, par exemple). Et s’il ne faut changer qu’un octet, tout le secteur est lu, corrigé et réécrit.

Mais vous n’avez pas besoin de penser à des secteurs. Pour changer un bit, il suffit de chercher une position d’octet appropriée dans le fichier, de lire cet octet, de changer le bit et d’écrire le résultat.