Fonctions d'entrée-sortie de dossier dans CZ |
Manipulation de fichier C - indicateurs de dossier
|
Employer un nouveau datatype appelé un indicateur de dossier à avec les fichiers C. Ce type est écrit comme DOSSIER *, et défini dans stdio.h. Un indicateur de dossier appelé output_file est déclaré dans un rapport est comme suit :
|
|
Function Name |
Operation |
fopen() |
Creates a new file for use
Opens a new existing file for use |
fclose |
Closes a file which has been opened for use |
getc() |
Reads a character from |
putc() |
Writes a character to a file |
fprintf() |
Writes a set of data values to a file |
fscanf() |
Reads a set of data values from a file |
getw() |
Reads a integer from a file |
putw() |
Writes an integer to the file |
fseek() |
Sets the position to a desired point in the file |
ftell() |
Gives the current position in the file |
rewind() |
Sets the position to the begining of the file |
|
En ouvrant employer d'indicateur de dossier fopen ()
|
Pour ouvrir des jets, fopen () est employé. Pour l'ouverture classe pour l'entrée, ceci est le plus employé souvent. Avant qu'elle puisse lui accéder, votre programme doit ouvrir un dossier. Cette fonction renvoie l'indicateur de dossier exigé. La NULLE de valeur sera retournée, si le dossier ne peut pas n'être ouvert pour aucune raison. le prototype des fopen est comme suit :
|
FILE *fopen (const char *path, const char *mode);
|
|
fopen rentre le chemin au dossier aussi bien que le mode et pour ouvrir le dossier avec. Prendre pour l'exemple suivant :
|
iFILE *Fp;
Fp = fopen("/home/johndoe/input.dat", "r");
|
|
Pour la lecture, ceci ouvrira le dossier dans /home/johndoe/input.dat. Vous emploierez habituellement fopen comme donné ci-dessous :
|
if ((output_file = fopen("output_file", "w")) == NULL)
fprintf(stderr, "Cannot open %s\n", "output_file");
|
|
fopen les prises deux arguments, tous les deux sont des cordes, le premier est le nom du dossier à ouvrir, la seconde est un caractère d'accès, qui est habituellement l'un de ce qui suit :
- ouverture de « r » - du dossier pour la lecture
- ouverture de « a » - du dossier pour apposer
- ouverture de « W » - du dossier pour l'écriture
- « w+ » - s'ouvrir pour l'écriture et la lecture (le dossier existant sera recouvert)
- « r+ » - s'ouvrir pour la lecture et la mise à jour (le dossier doit déjà exister)
- « a+ » - s'ouvrir pour apposer et lire (le dossier peut ou peut ne pas exister)
|
Les fragmentis suivants de code obtenaient le texte du premier élément de <title> :
|
Fermeture un indicateur de dossier en utilisant le fclose ()
|
Vous aviez l'habitude le fclose () pour fermer le jet. Le prototype pour le fclose est donné ci-dessous :
|
int fclose( FILE *stream );
|
|
Entrée-sortie de dossier : : fgets ()
|
Les solutions de rechange à scanf/fscanf est des fgets. Le prototype est comme suit :
|
char *fgets(char *s, int size, FILE *stream);
|
|
les fgets le stocke dans l'indicateur de *s et lit dedans la taille - les caractères 1 du jet. La corde toujours nul-est automatiquement terminée. Si elle atteint un EOF ou un caractère NL, les fgets cesse de lire en caractères.
|
Entrée-sortie de dossier : : sscanf ()
|
L'appel de bibliothèque de sscanf est maniable pour balayer une corde pour un format. Le prototype est comme suit :
|
int sscanf(const char *str, const char *format, ...);
|
|
le sscanf prend un indicateur de caractère au lieu d'un indicateur de dossier et fonctionne tout comme le fscanf. Au lieu de scanf/fscanf, employant la combinaison de fgets/sscanf vous pouvez éviter le problème de « digestion » (ou le bogue, selon à qui vous parlez :)
|
Entrée-sortie de dossier : : fprintf ()
|
Il est parfois utile également de produire aux différents jets.
le fprintf () nous permet de faire exactement la même chose
Le prototype pour le fprintf est comme suit :
|
int fprintf(FILE *stream, const char *format, ...);
|
|
le fprintf rentre un indicateur spécial appelé un indicateur de dossier, signifié par le DOSSIER *. Il accepte alors l'argument et une corde de formatage et. La seule différence entre le printf et le fprintf est que le fprintf peut réorienter le rendement à un jet particulier. Ces jets peuvent être stderr, stdout, ou un indicateur de dossier. Plus sur les indicateurs de dossier quand nous obtenons fopen. Un exemple est donné ci-dessous :
|
fprintf(stderr, "ERROR: Cannot malloc enough memory.\n");
|
|
Ce rendement le message d'erreur à l'erreur type.
|
Entrée-sortie de dossier : : fscanf ()
|
le fscanf () est fondamentalement une version de jets du scanf. Le prototype pour le fscanf est comme suit :
|
int fscanf( FILE *stream, const char *format, ...);
|
|
Entrée-sortie de dossier : : fflush ()
|
Si le programme se brise, parfois le jet n'est pas écrit. Vous pouvez faire ceci en employant la fonction de fflush (). Autrefois il est nécessaire de rincer avec force un amortisseur à son jet. Le prototype pour le fflush est comme suit :
|
int fflush(FILE *stream);
|
|
Pas très difficile à employer, indiquer le jet au fflush.
|
Le programme qui est donné au-dessous de l'utilisation d'affichages des opérations d'un dossier. Le le programme l'écrit et les données entrent par le clavier. Caractère par le caractère, pour classer l'entrée. La fin des données est indiquée en écrivant un caractère d'EOF, qui est commande-z. l'entrée de dossier est fermée à ce signal seulement.
|
#include< stdio.h >
main()
{
file *f1;
printf("Data input output");
f1=fopen(Input,w); /*Open the file Input*/
while((c=getchar())!=EOF) /*get a character from key board*/
putc(c,f1); /*write a character to input*/
fclose(f1); /*close the file input*/
printf("\nData output\n");
f1=fopen(INPUT,r); /*Reopen the file input*/
while((c=getc(f1))!=EOF)
printf("%c",c);
fclose(f1);
}
|
|
|
|
|
Keywords:
perl functions,
c tutorial,
php functions,
c array,
c time,
c programs,
c examples,
c language,
c library,
c dll,
unix c,
c program,
c example,
standard c,
array functions,
file open,
variable functions,
unix file,
functions tutorial,
functions examples,
file read,
file write,
simple c,
sample c,
variable c,
functions example
|