Lecture / ecriture des fichiers en c ( accés de bas niveau )

4/5 (18 avis)

Snippet vu 11 774 fois - Téléchargée 29 fois

Contenu du snippet

lecture / ecriture des fichiers en C ( accés de bas niveau )
l exemple lit le fichier dont le nom est demandé dans le programme et il passe en majuscule les lettres qui ne le sont pas...

Source / Exemple :


#include <iostream>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
using namespace std;

void AfficheFichier(char* nom)
{
char buffer;    // caractere lus
long fichier;   // identifiant du fichier
char nlus;
// on ouvre le fichier en lecture/ecriture
fichier=open(nom,O_RDWR);  
if(fichier==-1)
{
	//erreur d ouverture
	perror("open");
	exit(1);
}
else
{
	//lecture du buffer
	nlus=read(fichier,&buffer,sizeof(buffer));
	while(nlus!=0)
	{
		// on ecrit un caractere "buffer" au format C
		printf("%c",buffer);
		if((buffer>='a')&&(buffer<='z'))
		{
			// on recule d un caractere dans le fichier
			lseek(fichier,-1,SEEK_CUR);
			// on passe le caractere en majuscule
			buffer=buffer-'a'+'A';
			// on ecrit le buffer dans le fichier
			write(fichier,&buffer,sizeof(buffer));
		}
		// lecture du buffer
		nlus=read(fichier,&buffer,sizeof(buffer));
	}
	close(fichier);
}
}
int main(int argc,char* argv[])
{
char nom [50];
cout<<"Entrez le nom du fichier: ";
// on lit une chaine de caracteres "nom" au format C
scanf("%s",nom);
AfficheFichier(nom);
exit(0);
}

Conclusion :


il faut que le fichier lu soit dans le meme repertoire que le programme...

A voir également

Ajouter un commentaire Commentaires
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 janv. 2004 à 18:41
Si tu lis octet par octet un gros fichier + deplacement en cas de minuscule, ben faudra pas etre presse.
Charge dans un buffer par passe de 1 Mo et traite en memoire.
morgandetoi06 Messages postés 389 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 17 décembre 2004 1
7 janv. 2004 à 19:30
c juste un petit tp d info de 1ere année de bts on fait avec ce qu on sait faire...
Utilisateur anonyme
8 janv. 2004 à 18:13
Dans quel header se trouve la fonction "open" ?? unistd.h ??
Pq ne po avoir utilise fopen ??
Quelle est la difference entre les 2 ??

Il est possible d'utiliser les namespaces en C ??

Merci

++
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
8 janv. 2004 à 19:27
C'est du C, du C++, un mixage ???
cout, scanf, on sait plus ou on en est !!!
morgandetoi06 Messages postés 389 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 17 décembre 2004 1
8 janv. 2004 à 20:54
ah oué pour le cout j ai pas fait expres, enfin ici quand je parle de C et pas de C++ c juste pour l acces aux fichiers apres le reste on s en fout c juste pour faire un exemple

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.