Peut-être au cas où la fonction stat échoue ?
Citation:
Envoyé par dj.motte Voir le message
Ah bon, la taille en octets d'un fichier peut être négative ? Un fichier à -1 octet je ne connaissais pas.
regarde le nom du type : c'est un offset donc oui ça peut être négatif.
Pas de Wi-Fi à la maison : CPL
Bonjour,
Ma foi je veux bien. Mais alors dans la structure stat st_size devrait s'appeler st_pos ou st_ofs ?Non. un offset sert à déplacer le 'curseur' du fichier. Pour le reculer, l'offset doit être négatif... C'est si difficile que ça à comprendre ?
Est-il possible dans la fonction fstat( &stat ) de manipuler st.size pour modifier la taille du fichier ou pour déplacer le curseur ? Ca me parait obscure. Pour se déplacer il y les fseek, seek. Pour retailler le fichier ftruncate.
Bonjour à tous,
Le grand retour (il y a des problèmes comme ça qui vous suivent toute votre vie ^^).
Je reviens vers vous pour ce problème de fichiers dont la taille dépasse 4Go.
Cette fois je souhaite développer une application portable (norme POSIX) donc je m'interdit complètement d'utiliser l'API Win32.
Je dois également manipuler de gros fichiers, et j'ai vu que les fonctions retournaient des off_t. Sur Internet j'ai trouvé des directives qui permettent de compiler les off_t sur 64 bits. MAIS apparemment cela ne fonctionne que sous UNIX (#define _FILE_OFFSET_BITS 64).
Je ne parviens pas à "transformer" ces off_t en 64 bits sous Windows (7).
m'affiche 4, donc je suis encore sur 32 bits.
Code : Sélectionner tout - Visualiser dans une fenêtre à part printf("%d\n",sizeof(off_t));
Je ne vois pas vraiment comment faire car je veux utiliser la fonction stat() pour récupérer les informations sur les fichiers.
Merci
Hélas, sous Visual c'est tout un autre ensemble de fonctions qui est utiliser: voir _fseeki64()...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Bonsoir,
Il n'y a vraiment aucun moyen d'avoir un code portable?
Et pour ce qui est de la question de la fonction stat() comment faire?
Merci
salut,
Personnellement je manipule sous windows et linux des fichier > 2GO avec les instructions suivantes:
j'ai du inclure les 2 defines suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 unsigned long long int longfichier fseek(f0,0L,SEEK_END); longfichier=ftello64(f0); fopen64(...) off64_t sizeOfInt = sizeof(int); /*garanti signé et 64 bits*/ fseeko64(f0,1000*sizeOfInt,SEEK_CUR);
_LARGEFILE64_SOURCE
__USE_FILE_OFFSET64
Je ne sais plus lequel est necessaire, mais aussi bien sous linux que windows 32bits je lis et manipule des fichier > 10GO
Si tout ca peut t'aider
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager