CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

programme c ; fichiers

tomtex
tomtex
Niveau 8
19 mars 2009 à 18:18:25

Salut, Voilà l'exercice :

Ecrire une fonction int traiter (int f, int *car, int *lig);
qui calcule les nombres de caracteres et lignes contenus dans le fichier (ouvert en lecture) de descripteur f. Cette fonction devra utiliser les primitives "bas niveau" vues en cours. Pour eviter les acces repetes aux fichiers, il est souhaitable d’utiliser un "buffer" pour traiter les caracteres par blocs (nous choisirons ici un buffer de 80 caracteres). La fonction doit donc lire un bloc de caracteres dans le fichier puis le traiter (compter le nombre de caracteres et lignes) et passer au bloc suivant. Attention, une ligne peuvent etre a cheval sur plusieurs blocs
La fonction place respectivement les nombres de caracteres et lignes dans les parametres car et lig et retourne
0 en cas de succes et 1 en cas d’erreur.
Ecrire une fonction main tres simple permettant de tester votre fonction.

donc je vois à peu près le principe ; je sais ouvrir/fermer les fichiers, comment compter le nombre de caractères et le nombre de ligne ; en revanche je ne sais pas comment faire le buffer ; ni parcourir le fichier.
merci pour votre aide.

godrik
godrik
Niveau 30
19 mars 2009 à 19:04:15

ici tu n'as pas besoin d'ouvrir ou de fermer le fichier, il t'est donne en parametre.
ce que l'on te demande de faire est de ne pas lire les caractere un a un du fichier mais de les lire par bloc. L'idee est donc de creer un buffer de taille fixe, de lire les donnes par bloc et pour chaque bloc faire ton traitement.

Je ne vois pas bien ce qui te pose probleme.

tomtex
tomtex
Niveau 8
21 mars 2009 à 15:48:45

le problème c'est que je ne sais pas comment créer le buffer ; et comment après lire les données dans le fichier

dnob700
dnob700
Niveau 10
21 mars 2009 à 16:18:23

un beffer c'est juste un tableau de caractères ("char buffer[80];" ici).

Et tu lis les données avec la fonction "read" (2) que tu as certainement vu en cours (en tout cas c'est indiqué dans ton énoncé).

caelacanthe
caelacanthe
Niveau 10
21 mars 2009 à 16:26:57

et pour le reste, tu peux compter le nombre de caractères lus réellement a chaque lecture de bloc, et parcourir le bloc pour compter les \n afin d'avoir les lignes :ok:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment