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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 039 fois - Téléchargée 27 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

Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Si tu veux être un peu plus bas niveau que fopen ou autre : http://www.cppfrance.com/code.aspx?ID=28146. Les APIs Natives (direct ntdll.dll) : ZwCreateFile, ...
Utilisateur anonyme
@moragndetoi

Merci pour l'info sur la fct open :)

++
Messages postés
8
Date d'inscription
jeudi 27 mars 2003
Statut
Membre
Dernière intervention
24 février 2004

Apparament c'est juste un exemple mais mieux vaut prévenir quand meme : NE JAMAIS UTILISER scanf() ! Et si la personne entre une chaine de plus de 50 caractères ? BufferOverFlow garanti !
Mieux vaut utiliser fgets(chaine,50,stdin);

NW
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
23
De toutes les manieres faut rien croire, ecris les 2 façons et compile en tirant le listing asm du compilo. Tu regardes et si aucun des 2 ne produit un appel direct sur API du systeme alors nenni bas niveau et t'es pas oblige de le dire a tes profs.
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1
mes profs d'infos m'ont donné un policopié sur les fichiers et ils parlent bien d acces de bas et haut niveau donc à mon avis ils l'on pas inventé
voila un aperçu de la doc:
http://loulou06.9online.fr/doc.jpg
Afficher les 18 commentaires

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.