Réservation de mémoire pour un fichier en C

Résolu/Fermé
youscoul Messages postés 125 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 7 janvier 2013 - 2 avril 2010 à 17:22
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 6 avril 2010 à 21:15
Bonjour à tous,

J'aimerai crée un fichier et lui réserve un espace mémoire sur mon disque dur. Si quelqu'un connait une astuce pour ces genres de choses? Merci d'avance

A voir également:

2 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
2 avril 2010 à 17:48
Bonjour,

Lorsque tu créé un fichier, c'est pour écrire dedans.
La taille de ton fichier dépends donc de son contenu, mais aucunement d'une gestion d'allocation de "taille/mémoire" sur le disque dur.

On ne peut pas réserver - du moins je crois - à l'avance un certain espace pour un fichier.
0
youscoul Messages postés 125 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 7 janvier 2013 4
2 avril 2010 à 18:16
merci pour cette réponse rapide. En effet, lorsque que je crée mon fichier, j'ecris à chaque fois 4 élements de type float. Mais le problème est que ces 4 elements peuvent êtres stockés par exemple à la position 1000 de mon fichier. Donc comment le système peut gerer ça ?, car on n'a rien ecrit d'abord dans mon fichier entre son debut........jusquà cette position. Merci
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
2 avril 2010 à 22:08
Comment veux-tu écrire à la position 1000 de ton fichier s'il n'y a rien d'écrit dedans ?
Tu pourras mettre une variable à la position 1000 lorsque ton fichier contiendra 999 enregistrements au minimum (ce sera alors le dernier élément).

En parallèle avec la réalité, c'est comme si tu voulais finir 10ème à une course où tu es tout seul.

Si tu veux plus de précisions, n'hésite pas.

Cdlt,
0
youscoul Messages postés 125 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 7 janvier 2013 4
3 avril 2010 à 16:59
J'etais de même avis que vous avant que je ne fasse ce code:
file=fopen("file.txt", "w");
fseek(file, 10000, SEEK_SET);
putc('A', file);

===========>>>>>RESULTAT<<<<=================
sur mon disque la taille du fichier est de 10Ko, etonnant non ???
et quand je l'ouvre, tou est vierge sauf à la position 10000 où je vois bien mon CHAR A.
C'est pourquoi j'ai voulu ouvert cette discussion pour qu'on puisse en parler. Peut fonction du compilateur ou ???? à bientôt et merci à vous
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
6 avril 2010 à 12:00
Pas étonnant non.
C'est parce que cette fonction te permet de remplir automatiquement ton fichier de vide si tu tente d'aller à un taille au délà de ce que "pèse" déjà ton fichier.

Si c'est cela que tu souhaitais faire, ma fois oui, c'est faisable. C'est juste que comme tu l'expliquais, normalement ce n'est pas faisable. Après, si tu souhaite remplir de vide ton fichier, pas de problème.
0
youscoul Messages postés 125 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 7 janvier 2013 4
6 avril 2010 à 12:19
Effectivement c'est ce que je souhaitais faire. Je saute et après avoir la possibilité de remplir les espaces vides de mon fichier. ça y ait je suis parvenu. Merci beaucoup pour vos réponses.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
6 avril 2010 à 21:15
Pour kij_82
C'est parce que cette fonction te permet de remplir automatiquement ton fichier de vide si tu tente d'aller à un taille au délà de ce que "pèse" déjà ton fichier.
Non, cette fonction ne permet pas celà. Si cela arrive de le voir, il s'agit d'un d'un comportement non standard.
Pour le remplir, il faut le faire manuellement avec les fonctions d'écriture.
0