Maison >Problème commun >Quels sont les types de fichiers que le langage C peut gérer ?
Les types de fichiers que le langage C peut gérer sont : les fichiers texte et les fichiers binaires. Les fichiers que le langage C peut traiter sont divisés en fichiers texte et fichiers binaires selon la forme de stockage : 1. Les fichiers texte stockent un code ASCII et le contenu du fichier peut être directement entré et sorti 2. Les fichiers binaires stockent directement des caractères ; et ne peut pas stocker de fichiers binaires. Le contenu du fichier est affiché directement à l'écran.
L'environnement d'exploitation de ce tutoriel : système Windows 7, version c99, ordinateur Dell G3.
Dans les ordinateurs, les entrées et les sorties se présentent sous la forme de flux de données. Selon le mode d'accès, les fichiers sont divisés en fichiers à accès séquentiel et fichiers à accès aléatoire. Selon la forme de stockage, il est divisé en fichiers binaires et fichiers texte. Le fichier texte stocke un code ASCII et le contenu du fichier peut être directement entré et sorti. Les fichiers binaires stockent directement les caractères et le contenu des fichiers binaires ne peut pas être affiché directement à l'écran. Par conséquent, les fichiers que le langage C peut traiter sont divisés en fichiers texte et fichiers binaires selon la forme de stockage.
La différence entre les fichiers texte et les fichiers binaires
Les fichiers texte sont généralement utilisés pour enregistrer des caractères visibles à l'œil nu, tels que les fichiers .txt, .c, .dat, etc. En ouvrant ces fichiers avec un éditeur de texte, nous pouvons comprendre en douceur le contenu du fichier.
Les fichiers binaires sont généralement utilisés pour enregistrer du contenu illisible tel que des vidéos, des images, des programmes, etc. Si vous ouvrez ces fichiers avec un éditeur de texte, vous verrez un tas de caractères tronqués que vous ne pouvez pas comprendre du tout.
Mais physiquement parlant, il n'y a pas de différence entre les fichiers binaires et les fichiers de caractères. Ce sont tous deux des données stockées sur disque sous forme binaire.
La raison pour laquelle nous pouvons comprendre le contenu des fichiers texte est que les fichiers texte utilisent des codages de caractères tels que ASCII, UTF-8, GBK, etc. L'éditeur de texte peut reconnaître ces formats de codage et convertir les valeurs de codage en caractères pour l'affichage.
Les fichiers binaires utilisent des formats d'encodage spéciaux tels que mp4, gif, exe, etc. L'éditeur de texte ne reconnaît pas ces formats d'encodage et ne peut les analyser que de manière aléatoire en fonction du format d'encodage des caractères, cela devient donc un désordre de caractères, certains même Je ne l'ai jamais vu.
Si nous créons un nouveau fichier mp4, y écrivons une chaîne de caractères, puis l'ouvrons avec un éditeur de texte, vous pouvez toujours le comprendre. Les lecteurs intéressés peuvent l'essayer eux-mêmes.
En général, différents types de fichiers ont des formats d'encodage différents, et les programmes (logiciels) correspondants doivent être utilisés pour les analyser correctement, sinon ils seront un tas de caractères tronqués ou ne pourront pas être utilisés.
Pour les programmeurs, les fichiers texte et les fichiers binaires sont une déclaration indiquant comment ouvrir le fichier (mode texte/binaire), quelle fonction vous devez utiliser pour lire et écrire le fichier (fonctions de lecture et d'écriture) et comment déterminer quand vous aurez lu cette Fin de dossier.
Plus précisément :
1. Comment ouvrir un fichier ?
ANSI C spécifie la bibliothèque de fonctions d'entrée et de sortie standard et utilise la fonction fopen() pour ouvrir les fichiers. La méthode d'appel de la fonction fopen() est généralement :
FILE *fp; fp=fopen(文件名,使用文件方式);
Voir le tableau suivant pour la méthode fichier :
Utilisez la méthode fichier |
Signification |
"r" (lire uniquement) |
Ouvrez un fichier texte pour la saisie |
"w" (écriture uniquement) |
Ouvrez un fichier texte pour la sortie |
"a" (ajouter) | Ouvrez-en un pour ajouter un fichier texte |
"rb" (lecture seule) |
Ouvrez un fichier binaire pour la saisie |
"wb" (écriture uniquement) |
Ouvrez un binaire fichier pour la sortie |
"ab" (ajouter) |
Ouvrir un fichier binaire pour l'ajouter |
"r+" (lecture et écriture) |
Ouvrir un fichier texte pour la lecture/ écriture |
"w+" (lecture et écriture) |
Créer un fichier texte pour la lecture/écriture |
"a+" (lecture et écriture) |
Ouvre un fichier texte pour lecture/écriture |
"rb+" (lecture et écriture) |
Ouvre un fichier binaire pour la lecture/écriture |
"wb+" (lecture et écriture) |
Créer un fichier binaire pour la lecture/écriture |
"ab+" (lecture et écriture) |
Ouvre un fichier binaire pour la lecture/écriture |
Lorsque le même fichier est lu du disque vers la mémoire (zone de données du programme ou zone de cache), le contenu de la mémoire est généralement différent dans les deux méthodes. C'est la différence substantielle entre les deux méthodes d'ouverture.
Il y a un arrière-plan ici, c'est-à-dire que sous Windows, il effectuera un processus, c'est-à-dire que lors de l'écriture d'un fichier, le caractère de nouvelle ligne sera converti en retour chariot. Le caractère de nouvelle ligne est stocké dans le fichier disque, et. lors de la lecture du fichier sur le disque, un traitement inverse sera effectué, c'est-à-dire que les retours chariot et les sauts de ligne consécutifs dans le fichier seront convertis en sauts de ligne.
Par conséquent, lors de la lecture d'un fichier disque, le contenu du fichier lu en mode texte est susceptible d'être plus court que le fichier binaire, car la lecture en mode texte nécessite que deux caractères de retour chariot et de saut de ligne soient convertis en un seul caractère, ce qui est équivalent à la troncature Fichier court. Mais pourquoi est-ce simplement possible ? Parce qu'il ne peut pas y avoir deux octets consécutifs 45 et 42 dans le texte (45 est le code ASCII du retour chariot CR, 42 est le code ASCII du saut de ligne CL), il n'y a pas d'opération de « troncature », donc la lecture du contenu est le même.
Plus précisément, les fichiers (écrits en mode texte) sont mieux lus en mode texte. Les fichiers binaires (écrits en mode binaire) sont mieux lus en mode binaire. Sinon, cela pourrait être incorrect. Ce qui précède a été analysé.
2. Quelle fonction est utilisée pour lire et écrire des fichiers ?
La manière dont les données sont écrites sur le disque n'est pas déterminée par la méthode d'ouverture du fichier, mais par la fonction d'écriture. La manière dont les données sont lues sur le disque n'est pas déterminée par la méthode d'ouverture du fichier, mais par la fonction de lecture.
Comment écrire les données mentionnées ci-dessus signifie comment stocker un type de variable ? Par exemple, int 12, vous pouvez stocker directement le code binaire de 12 (4 octets), ou vous pouvez stocker le caractère 1 et le caractère 2. Comment lire les données signifie que si je veux lire une variable int, je dois lire sizeof (int) directement en octets, ou lu caractère par caractère jusqu'à ce que le caractère lu ne soit pas un caractère numérique.
C dispose de deux ensembles de fonctions de lecture et d'écriture de fichiers qui prennent en charge les deux méthodes de lecture et d'écriture ci-dessus :
fprintf (pointeur de fichier, chaîne de format, liste de sortie)
fscanf (fichier) ; pointeur, chaîne de format, liste d'entrée);
fprintf(文件指针,格式字符串,输出列表);
fscanf (文件指针,格式字符串,输入列表);
3Comment déterminer la fin du fichier ?
Dans le langage C, ou plus précisément la bibliothèque de fonctions standard C, il existe un caractère spécial EOF (cette définition dans stdio.h #define EOF (-1) ), qui représente : fin de fichier (fin de fichier) . Dans la boucle while, EOF est utilisé comme marque de fin de fichier. Le fichier avec EOF comme marque de fin de fichier doit être un fichier texte. Dans les fichiers texte, les données sont stockées sous forme de valeurs de code ASCII. Nous savons que la plage des valeurs du code ASCII est de 0 à 255 et que -1 est impossible, donc EOF peut être utilisé comme marque de fin de fichier. Cependant, en langage C, lorsque les données sont stockées dans un fichier sous forme binaire, une valeur -1 apparaîtra. À ce stade, EOF ne peut pas être utilisé comme marque de fin du fichier binaire. Pour résoudre ce problème, ANSI C fournit une fonction feof pour déterminer si le fichier est terminé. Si la fin du fichier est rencontrée, la valeur de la fonction feof (fp) est 1, sinon elle est 0. La fonction feof peut être utilisée pour déterminer si le fichier binaire se termine ou si le fichier texte se termine. Cependant, il convient de noter que lorsque feof est utilisé pour déterminer la fin d'un fichier texte, si le code n'est pas écrit correctement, le caractère de fin de fichier EOF dans le texte peut également être lu voir http://baike ; .baidu.com/view/656648 pour plus de détails. htm4. Savoir si un fichier est un fichier texte ou un fichier binaire nous "rappellera" davantage la fonction de lecture et d'écriture que nous devons choisir.
Comme mentionné en 2, la façon dont les données sont stockées n'est pas déterminée par la méthode d'ouverture du fichier, mais par les fonctions de lecture et d'écriture. Par exemple, si nous ouvrons un fichier sous forme de fichier binaire (en fait, il ne spécifie que la conversion des caractères de nouvelle ligne), cela représente plutôt un concept (virtuel) : j'"espère" que le contenu de ce fichier Les données sont comme ceci, le type int occupe 4 octets et le char occupe 1 octet. Dans ce mode, j'utilise fread(buffer,size0f(int),1,fp) pour lire un int dans une variable int.On se souvient
Avant d'opérer sur un fichier, il faut tout d'abord savoir si le fichier est un fichier texte ou un fichier binaire. Les fichiers sont ouverts en mode texte, et les fichiers binaires sont ouverts en mode binaire Si nous voulons faire fonctionner un fichier binaire, alors nous l'ouvrons en mode binaire (théoriquement, il peut aussi être ouvert en mode fichier, mais si les données binaires écrites contient 45 , sera converti en 45,42 stockage, voir 1. Cela est très probable). Lors de la lecture et de l'écriture en même temps, utilisez les deux fonctions fread et fwrite.Si je veux exploiter un fichier texte, alors on l'ouvre en mode texte (théoriquement, il peut aussi être ouvert en mode binaire, mais ce n'est pas sûr). Lors de la lecture et de l'écriture en même temps, utilisez les fonctions fprintf, fscanf, fgetc, fputc, putw, getw, fgetc, fputs
Recommandations associées : "Tutoriel vidéo C"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!