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

(C/C++) Trouver la taille avec fopen

lord_kalipsy
lord_kalipsy
Niveau 10
23 janvier 2005 à 18:31:03

Salut,

J´ai toujours cru qu´on pouvais calculler la taille d´un fichier ( une image . bmp dansm on cas ) avec fopen . .. Alors j´Ai esseyé hier, mais le résulta que j´obtien est pas euh . .. ce que j´attendais :-p

  1. include < stdio.h>

int main ( int argc , char *argv[] )
{

FILE *fileSRC;

fileSRC = fopen("testsrc.bmp" , " rb");

fseek( fileSRC , SEEK_END , 0 ) ;

fpos_t pos = 0;

fgetpos( fileSRC , & ) ;

printf("%d" , pos ) ;

fclose(fileSRC);

getchar();

return 0;

}

Et ça me donne 2 ! :ouch: Pourtant mon . bmp fait plus de 500ko . ..

Si vous avez une idée, merci de m´éclairé là dessus ^^

Psy³

Altonfrere
Altonfrere
Niveau 10
23 janvier 2005 à 18:54:32

je mettrai plutôt

long pos = ftell(fileSRC);

je connais pas trop fgetpos mais apparement ca te donne l´indicateur de position, soit ( peut être) SEEK_END qui vaut 2 ( cf dans stdio.h) . . enfin je suppose.

Par contre cette méthode n´est super rapide car ca oblige une ouverture, un déplacement des têtes sur le disque et une fermeture ( éventuelle) ou repositionnement par la suite.

Ya des fonctions déjà toute faite pour obtenir les infos d´un fichier comme la taille, les dates de création/modif etc... ( _findfirst, ) et il me semble qu´elles sont peut être plus optimisées. A tester.

lord_kalipsy
lord_kalipsy
Niveau 10
23 janvier 2005 à 19:27:36

Ça me donne 2 avec ftell aussi ! Étrange . ..

Altonfrere
Altonfrere
Niveau 10
23 janvier 2005 à 19:35:24

arf ok j´avais pas fais attention, le fseek est à l´envers :

fseek(fileSRC, 0, SEEK_END);

:)

lord_kalipsy
lord_kalipsy
Niveau 10
23 janvier 2005 à 19:37:50

Rooh pas possible -__-´´

Mici :)

kufa
kufa
Niveau 9
23 janvier 2005 à 19:38:15

Pour afficher en utilisant ftell, faut utiliser %ld au lieu de %d:
long pos = ftell( fileSRC ) ;
printf( " %ld\n", pos ) ; / / %ld au lieu de %d

Teste la valeur de retour de fseek, il n´est pas garanti de fonctionner.
Ensuite ton code fonctionne pas comme tu voudrai, car tu fais un fseek de 2 octets ( SEEK_END) a partir du debut ( SEEK_SET=0), en effet tu as inverse tes arguments:

if( fseek( fileSRC, 0, SEEK_END ) )
{
fclose( fileSRC ) ;
printf( " Cannot seek :/\n" ) ;
return 0;
}

kufa
kufa
Niveau 9
24 janvier 2005 à 00:53:44

hehe y avais pas de reponses lorsque j ecrivais mon post, desole pour la redondance..

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