[C] fgets signification de 2048 et 128

Résolu
slackeruser Messages postés 121 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 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

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
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
slackeruser Messages postés 121 Date d'inscription   Statut Membre Dernière intervention   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
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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