Gestion fichier

Signaler
Messages postés
20
Date d'inscription
jeudi 5 août 2004
Statut
Membre
Dernière intervention
20 septembre 2004
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Bonjour,
j'ai cherché , mais je ne trouve pas qu'elles sont la ou les fonction qui permette de créer, supprimer, renommer,lire, modifier un fichier .

Si vous pouviez m'aider svp .

Pierre

15 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
CreateFile , ouverture et/ou creation
ReadFile
WriteFile
SetFilePointer
CloseHandle, fermeture

Petzold pour l'interface graphique, etc...
http://brunews.free.fr/brunews/download/CP5.zip
http://brunews.free.fr/brunews/download/CP5Sources.zip

Richter pour la prog systeme, donc aussi les fichiers.
http://brunews.free.fr/brunews/download/JR4.zip
http://brunews.free.fr/brunews/download/JR4Sources.zip

Tu en trouveras divers exemples aussi dans mes sources et d'autres.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
BruNews > j'ai vu que tu est à fond pour l'api windows, mais tu crois pas qu'un debutant doit commencer par apprendre le c standard ?
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Mais va sans dire (mieux en le disant aussi, ok), je presuppose qu'il a bien un bouquin de C devant lui, il ne devrait donc pas rater le chapitre sur les fichiers.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
c'est sur, rien ne vaut un livre pour apprendre
Messages postés
20
Date d'inscription
jeudi 5 août 2004
Statut
Membre
Dernière intervention
20 septembre 2004

ouai , j'en ai un mais j'en suis qu'au debut et il ne parle que du mode consol.
Messages postés
20
Date d'inscription
jeudi 5 août 2004
Statut
Membre
Dernière intervention
20 septembre 2004

les fonction que tu m'a donné marche-t-elles sous linux ?
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
non justement c'est pas standard, ca fais partie de l'api windows

utilise la stdio

http://www.cplusplus.com/ref/cstdio/
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Encore un nuxien, bah ça lui passera.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
mais c'est la toute la base du c ;)
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
La 2CV etait aussi la base de Citroen mais au moins eux ils sont su evoluer et faire rouler les gens dans le confort.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
lol

pour repondre a la question des fichiers, je pense qu'il peux exploiter mes sources BFichier & BFichierTxt

certes, c'est du C++, mais l'intérieur est en C standard
(sauf modif de ma part)

après, à vous d'adapter
(j'ai ni le courage ni le temps de faire du C)

Je publierai les versions C de mes bibli prochainement si C demandé...
(elles auront qq années, mais, la 2CV tournait bien a l'essence alors...)

++
Magic Nono: l'informagicien!
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
BruNews> c'est dans les vieilles marmites qu'on fait les meilleurs plats ;)
Puis moi j'aime bien les 2CV !!!

Shell
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
moi aussi mais sur 4 roues et le compteur rond au milieu, la vraie en somme.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
4
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
25 novembre 2009

Ouverture et fermeture de fichiers


Ouverture d'un fichier : fopen




Lorsqu'on désire accéder à un fichier, il est nécessaire avant tout accès d'ouvrir le fichier à l'aide de la fonction fopen.


Utilisation


fopen (nom-de-fichier , mode)


Sémantique des paramètres


-


nom-de-fichier est de type pointeur vers char. La chaîne pointée est le nom du fichier auquel on veut accéder.


-


mode est de type pointeur vers char. La chaîne pointée indique le mode d'ouverture, elle peut être l'une des chaîne suivantes :


·["r"] ouverture d'un fichier texte en lecture.


·["w"] ouverture d'un fichier texte en écriture.


·["a"] ouverture d'un fichier texte en écriture à la fin.


·["rb"] ouverture d'un fichier binaire en lecture.


·["wb"] ouverture d'un fichier binaire en écriture.


·["ab"] ouverture d'un fichier binaire en écriture à la fin.


·["r+"] ouverture d'un fichier texte en lecture/écriture.


·["w+"] ouverture d'un fichier texte en lecture/écriture.


·["a+"] ouverture d'un fichier texte en lecture/écriture à la fin.


·["r+b" ou "rb+] ouverture d'un fichier binaire en lecture/écriture.


·["w+b" ou "wb+] ouverture d'un fichier binaire en lecture/écriture.


·["a+b" ou "ab+] ouverture d'un fichier binaire en lecture/écriture à la fin.






<HR align= center width="100%" SIZE=2>


Remarque


La fonction fopen a été normalisée en ayant présent à l'esprit que certains systèmes font la distinction entre fichiers binaires et fichiers textes. Cette distinction n'a pas cours dans le système UNIX.




<HR align =center width= "100%" SIZE=2>




Valeur rendue


La fonction fopen retourne une valeur de type pointeur vers FILE, où FILE est un type prédéfini dans le fichier stdio.h.


-


Si l'ouverture a réussi, la valeur retournée permet de repérer le fichier, et devra être passée en paramètre à toutes les procédures d'entrées-sorties sur le fichier.


-


Si l'ouverture s'est avérée impossible, fopen rend la valeur NULL.


Conditions particulières et cas d'erreur


-


Si le mode contient la lettre r, le fichier doit exister, sinon c'est une erreur.


-


Si le mode contient la lettre w, le fichier peut, ou peut ne pas, exister. Si le fichier n'existe pas, il est créé ; si le fichier existe déjà, son ancien contenu est perdu.


-


Si le mode contient la lettre a, le fichier peut, ou peut ne pas, exister. Si le fichier n'existe pas, il est créé ; si le fichier existe déjà, son ancien contenu est conservé.


-


Si un fichier est ouvert en mode << écriture à la fin >>, toutes les écritures se font à l'endroit qui est la fin du fichier au moment de l'exécution de l'ordre d'écriture. Cela signifie que si plusieurs processus partagent le même FILE *, résultat de l'ouverture d'un fichier en écriture à la fin, leurs écritures ne s'écraseront pas mutuellement. D'autre part, si un processus ouvre un fichier en écriture à la fin, fait un fseek pour se positionner à un endroit du fichier, puis fait une écriture, celle-ci aura lieu à la fin du fichier (pas nécessairement à l'endroit du fseek).


Les voies de communication standard


Quand un programme est lancé par le système, celui-ci ouvre trois fichiers correspondant aux trois voies de communication standard : standard input , standard output et standard error. Il y a trois constantes prédéfinies dans stdio.h de type pointeur vers FILE qui repèrent ces trois fichiers. Elles ont pour nom respectivement stdin, stdout et stderr.


Utilisation typique de fopen


#include <stdio.h>


FILE *fp;




if ((fp fopen("donnees","r")) = NULL)


{


fprintf(stderr,"Impossible d'ouvrir le fichier données en lecture\n");


exit(1);


}


fermeture d'un fichier : fclose


Quand on a terminé les E/S sur un fichier, il faut en informer le système à l'aide de la fonction fclose.


Utilisation


fclose ( flot-de-données )


Sémantique des paramètres


-


flot-de-données est de type pointeur vers FILE. Il pointe vers le fichier à fermer.


Valeur rendue


La fonction fclose rend la valeur zéro si le fichier a été fermé, et rend EOF si il y a eu une erreur.


Utilisation typique


#include <stdio.h>


FILE *f;




fclose(f);


Lecture et écriture par caractère sur fichier


lecture par caractère : fgetc




Utilisation


fgetc (flot-de-données)


Sémantique des paramètres


-


flot-de-données est de type pointeur vers FILE. Il pointe vers le fichier à partir duquel se fait la lecture.


Description


La fonction fgetc lit un caractère du fichier flot-de-données.


Valeur rendue


Si la lecture se fait sans erreur et sans rencontre de la fin de fichier, fgetc rend le caractère lu. Si il y a erreur d'entrée-sortie, ou rencontre de fin de fichier, fgetc rend la valeur EOF. Pour cette raison, le type de la valeur rendue est int et non pas char.


Utilisation typique


#include <stdio.h>


int c;


FILE *fi;




while ((c = fgetc(fi)) != EOF)


{


.../*utilisation de c*/


}


lecture par caractère : getc


Il existe une fonction getc qui est rigoureusement identique à fgetc (même interface, même sémantique), sauf que getc est implémenté comme une macro et non comme une vraie fonction C. La différence est que getc peut évaluer plusieurs fois son paramètre flot-de-données , ce qui lui interdit d'être une expression contenant des effets de bord.
Exemple :


int i;


FILE * TAB_FILE[10];




c = getc(TAB_FILE[i++]);/*Arrgh..., effet de bord !*/


lecture par caractère : getchar




Utilisation


getchar ( )


Description


La fonction getchar est rigoureusement équivalente à getc(stdin). C'est également une macro, mais comme elle n'admet pas de paramètre, elle n'a pas le (petit) inconvénient de getc.


écriture par caractère : fputc




Utilisation


fputc (carac , flot-de-données)


Sémantique des paramètres


-


carac est de type int, c'est le caractère à écrire.


-


flot-de-données est de type pointeur vers FILE. Il pointe vers le fichier sur lequel se fait l'écriture.


Description


La fonction fputc écrit le caractère carac dans le fichier flot-de-données.


Valeur rendue


La fonction fputc rend le caractère écrit si l'écriture s'est faite sans erreur, ou EOF en cas d'erreur.


Utilisation typique


#include <stdio.h>


int c;


FILE *fi,*fo;




/*fi : résultat de fopen de fichier en lecture*/


/*fo : résultat de fopen de fichier en écriture*/




while ((c = fgetc(fi)) != EOF)


fputc(c,fo);


lecture par caractère : putc


Il existe une fonction putc qui est rigoureusement identique à fputc (même interface, même sémantique), sauf que putc est implémenté comme une macro et non comme une vraie fonction C. La même remarque que celle faite au sujet de getc s'applique donc à putc.


écriture par caractère : putchar




Utilisation


putchar (carac)


Description


Un appel putchar(c) est rigoureusement identique à fputc(c,stdout).
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Windows non plus ne connait pas de distinction entre fichier binaire et texte, il aspire des paquets d'octets par un driver et rien d'autre. D'ailleurs y a-t-il un système qui connaisse cette distinction ? Je la crois uniquement due aux surcouches d'interprétation comme fopen ou autres.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++