[C] fgets signification de 2048 et 128

Résolu
slackeruser Messages postés 146 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'aii trouvé cette instruction dans un code source : fgets (buffer, 2048, fp);
et fgets (buffer,128, fp);

je veux savoir la signification des nombres 2048 et 128
merci

4 réponses

  1. Lupin
     
    Bonsoir,

    Un partie de la réponse ...

    fgets (buffer, 2048, fp);
    fgets (buffer, 128, fp);

    fgets est une fonction pour
    aller chercher des donnees

    cette fonction utilise ici 3 arguments

    buffer - nom de l'emplacement mémoire du récipient
    128 ou 2048 - taille du récipient
    128 bits ou 2048 bits
    fp - ??? je ne connais pas ce paramètre, reférence au type de données j"imagine.

    la fonction peut alors lire des blocks de fichier,
    le plus petit bloc du système de fichier NTFS contient
    4096 octets.

    Bonne continuité.

    Lupin
    0
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Lorsque tu ne sais pas, regarde la documentation :
    http://www.linux-kheops.com/doc/man/manfr/man-ascii-0.9/man3/fgets.3.txt.html
    128 ou 2078 représente la taille lu en effet, mais en octet et non en bit.
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      128 ou 2078 représente la taille en byte et non octet. Même si on constate qu'en général le byte vaut 8 bits (donc un octet), ce n'est pas une obligation.
      0
  3. slackeruser Messages postés 146 Statut Membre 16
     
    tout à fait sauf que ces 2 nombres représentent une chose spécial , je ne me rappel pas c'est quoi , parceque dans plusieurs codes on voit aussi malloc(2048) ou malloc(128)
    alors pourqu'oi 128 ou 2048 et pas 2000 ou 100 ?
    0
    1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
       
      C'est des puissances de 2. C'est tout.
      2^10=1024
      2^11=2048
      128, c'est 2^7 je crois.
      Et comme les ordinateurs fonctionnent souvent en puissance de 2, c'est une espèce d'optimisation.
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Oui cela est une question d'optimisation.
      malloc() parcourt une liste chaînée pour trouver les blocs disponibles. Une fois qu'un bloc de mémoire suffisamment grand a été alloué, malloc() le coupera en deux pour remettre le résidu dans la liste des blocs disponibles. En allouant une puissance de deux, tu perdras certes de la mémoire, mais tu diminueras le taux de fragmentation des blocs disponibles.
      0
  4. Lupin
     
    Bonjour,

    Effectivement je croyais qu'il s'agissait de mots binaires

    ce que je ne sais pas c'est que 128 représente bien
    128 octets et non 128 bits (16 octets).
    désolé pour ce détail et merci de la précision.

    étant donné qu'a l'époque ou j'ai codé ces choses
    il s'agissait de bits, il serait tout juste naturelle
    qu'il s'agissent d'octets, c'est donc ce que fait
    la fonction

    fgets(nom_Adresse, espace_alloué, Type_Transfert)

    tout étant retransformé en code machine, l'adressage
    est sur une base binaire, une simple adresse url
    prend 4 octets, 32 bits

    pour moi le nombre d'octets est le nombre d'octets
    annoncer par le variable selon on type donnée

    avec 2 G RAMs, tant qu'a ouvrir un canal aussi
    bien prendre un canal de 2048 octets, 2 K RAM,
    avec un OS normal je pourrais en ouvrir 500
    canaux simultannéments comme celui-ci.

    Lupin
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Oui, mais rien ne garanti qu'il s'agisse d'un octet. La seule précision qu'apporte la norme est que c'est un byte d'au moins 8 bits...
      0