Vecteur dans fichier - C - Programmation
Marsh Posté le 29-03-2008 à 09:25:02
Si ton but c'est juste d'enregistrer un vecteur dans un fichier, je vois pas ce que le tri vient faire dans l'histoire.
Marsh Posté le 29-03-2008 à 13:26:36
std::copy + stream_iterator
Code :
|
Digère ça et interdiction de demander comment on fait pour lire avant d'avoir lu la documentation relative à tout ça.
Marsh Posté le 29-03-2008 à 23:57:14
ben en fait je dois enregistrer dans un fichier un vecteur dont les nombre sont trié. Pour le moment j'utilise une fonction ki trié par ordre croissant les enregistrement qui sont dans un autre fichier sur le numero du produit.
Une fois fait mon vecteur contient les numero de produit trie par ordre croissant. Seulement ce vecteur je dois l'enregistrer dans un fichier mais je sais pas comment faire...
Aidez moi svp.
Marsh Posté le 30-03-2008 à 05:04:43
C'est quoi un vecteur pour toi?
C'est du C ou du C++?
Tu sais lire un fichier mais pas écrire dedans? (indice lire en anglais se dit read et ecrire write)
Si c'est du C++ t'as la réponse de Taz.
Si c'est du C, montre nous où t'en es au lieu de demander une solution toute faite.
Taz, je voulais faire un bô lien vers ton topic [BIBLIOLINK C] mais pas mal de liens sont morts il me semble:
http://forum.hardware.fr/hfr/Progr [...] 9954_1.htm
j'ajouterais qu'une simple recherche google: "langage C ecrire fichier" te donne absolument toutes les réponses et même des tuto dans les premiers liens (chez moi le deuxieme lien récapitule toutes les fonctions).
Marsh Posté le 30-03-2008 à 10:47:55
ptitchep a écrit : |
Sauf que 85654% de ces sites utilisent la méthode feof qui est débile v_v.
Marsh Posté le 30-03-2008 à 13:04:45
(oops)
Trop de cours de C sont écrits par des gens qui enseignaient encore le Pascal y a 5 ans, alors l'erreur du feof, ils ne la verront jamais.
Marsh Posté le 30-03-2008 à 16:31:24
je veux pas que vous me donnier du code je voudrais simplement savoir si il est possible d'enregistrer un veteur dans un fichier...
Si oui comment, si non faut il enregistrer les terme du vecteur un a un.
Merci
Marsh Posté le 30-03-2008 à 17:06:12
pepito17 a écrit : je veux pas que vous me donnier du code je voudrais simplement savoir si il est possible d'enregistrer un veteur dans un fichier... |
Oui, il est possible d'enregistrer un vecteur dans un fichier. On peut enregistrer à peu près ce qu'on veut dans un fichier d'ailleurs.
Comment ? En utilisant les fonctions de manipulation d'un fichier : fprintf (en mode texte), ou fwrite (en mode binaire).
Voici un exemple de code permettant d'enregistrer un vecteur (représenté sous forme d'une structure) dans un fichier texte.
Code :
|
Marsh Posté le 30-03-2008 à 18:37:42
Joel F a écrit : Sauf que 85654% de ces sites utilisent la méthode feof qui est débile v_v. |
Oui mais au moins il aurait quelque chose à montrer et là tu lui expliquerais pour le feof.
edit: du coup j'ai lu le site dont je parle il propose ça en exemple:
Code :
|
Les fonctions fopen, fread,... sont décrites en dessous mais pas d'exemple. On suppose quand même qu'il ne faut pas utiliser feof, il n'utilise pas d'eof dans l'exemple précédent...
Marsh Posté le 30-03-2008 à 18:57:32
Merci pour cette reponse xilebo mais comme je pourrai faire avec du binaire ? parce que si je fait comme toi ca l'enregistrera en texte moi il le faut en binaire...
Merci pour ton aide
Marsh Posté le 30-03-2008 à 19:04:34
http://www.linux-kheops.com/doc/ma [...] pen.3.html
http://www.linux-france.org/articl [...] ead-3.html
Marsh Posté le 30-03-2008 à 19:12:49
pepito17 a écrit : Merci pour cette reponse xilebo mais comme je pourrai faire avec du binaire ? parce que si je fait comme toi ca l'enregistrera en texte moi il le faut en binaire... |
Ben tu sors tes petits doigts muscles et tu regardes la documentation de fwrite.
Un autre lien interessant : http://mapage.noos.fr/emdel/notes.htm#fichiers
Marsh Posté le 30-03-2008 à 19:27:49
ptitchep a écrit :
|
open,read & co .. non mais c'est quoi ce bordel. Pourquoi pas les commandes systemes en asm tant qu'on y est :[
Marsh Posté le 30-03-2008 à 19:44:34
ptitchep a écrit : a écrit : Les fonctions fopen, fread,... sont décrites en dessous mais pas d'exemple. |
Ben ça récapitule tout, et le même exemple avec fopen au lieu de open, ca ne change en rien la logique... Mais bon c'est vrai que l'inverse serait plus pratique (exemple ac fopen et juste description des fonctions open,...)
Et puis à la base je voulais juste lui dire qu'avec google et un peu de courage sa question serait passée de :
Comment fait on pour...
à
Je n'ai pas compris le fonctionnement de ... quand je fais
Code :
|
j'ai tel problème.
Marsh Posté le 30-03-2008 à 21:03:15
pepito17 a écrit : Merci pour cette reponse xilebo mais comme je pourrai faire avec du binaire ? parce que si je fait comme toi ca l'enregistrera en texte moi il le faut en binaire... |
Comme on te l'a expliqué ci-dessus, le mieux est que tu regardes la documentation des fonctions. Ce sont des fonctions standard, tu la trouveras à peu près n'importe où (man "fonction" sous un linuxoide, ou sous google).
Pour écrire des données binaires dans un fichier, il faut utiliser la fonction fwrite, qui accepte en paramètre une adresse ainsi qu'une taille.
Voici un exemple de code avec fwrite :
Code :
|
Marsh Posté le 30-03-2008 à 22:00:34
oui ca je sais comment utiliser la fonction fwrite, ... Mais je ne sais pas quel est la taille de mon vecteur.
J'ai mon vecteur NumProd qui se compose ainsi :
NumProd[0]=1
NumProd[1]=12
NumProd[2]=54
Mais je ne connais pas la taille de l'espace disponible pour un temre en n position. Sans connaitre la taille on ne sais pas utiliser fwrite et donc c'est ca mon probleme... Comment puis je faire ?
Merci
Marsh Posté le 30-03-2008 à 22:04:54
sizeof
edit : ou alors j'ai pas compris la question
Marsh Posté le 30-03-2008 à 22:07:28
J'avoue que j'ai pas bien compris ta derniere phrase.
normalement tu crées ton tableau (tu connais donc sa taille), tu y ajoutes les éléments (tu en connais le nombre <= taille) tu le tries (si tu veux) et ensuite tu l'écris dans le fichier:
fwrite (NumProd, sizeof(int), nbElements, fichier); //si tes éléments sont des int.
Marsh Posté le 30-03-2008 à 22:10:52
La taille, tu la connais forcément.
Si ton vecteur est représenté par un tableau de n cases (n étant donc la dimension de ton vecteur), et bien la taille mémoire est égale à n fois la taille d'un élément de ton tableau.
Marsh Posté le 30-03-2008 à 22:15:42
merci ptitchep, c'est ce qu'il me fallait je ne savais pas comment utiliser le sizeof.
Et donc, moi je le trie.
Je dois faire fwrite apres la position de chaque terme ou bien une fois que mon vecteur est totallement trié ?
Merci
Marsh Posté le 30-03-2008 à 22:31:44
Je crois que tu ne comprends pas toi-meme ce que tu veux faire.
Pose-toi un moment, et demande-toi "pourquoi" tu dois sauver un vecteur dans un fichier.
S'en suivra naturellement la deduction de ce que tu dois converver comme donnees, et sous quelle forme.
Laisse le "comment" pour l'etape d'apres, une fois que tout est clair pour toi.
Marsh Posté le 30-03-2008 à 22:40:28
Dans le lien d'Elmoricq:
Déterminer la taille sans le type
Il est courant de déterminer la taille d'un objet en utilisant son type
{
int *p = malloc (sizeof (int));
}
Si le type change, on est obligé de modifier 2 fois le code:
{
long *p = malloc (sizeof (long));
}
Lorsqu'il s'agit d'un pointeur typé, il existe une technique alternative qui consiste à utiliser la taille d'un élément pointé par ce pointeur :
{
int *p = malloc (sizeof *p);
}
Le changement de type se trouve largement simplifié :
{
long *p = malloc (sizeof *p);
}
Ca sera mieux que mon sizeof(int).
Marsh Posté le 30-03-2008 à 22:54:05
on ne nous a pas encore apris l'utilisation de malloc...
Et non je ne sais pas ce que je dois faire puisque je vous le demande...
je voudrais simplement savoir comment enregistrer donc un vecteur dans mon fichier...
Marsh Posté le 30-03-2008 à 23:00:30
pepito17 a écrit : on ne nous a pas encore apris l'utilisation de malloc... |
c'est pas pour le malloc que j'ai mis ca, mais pour le sizeof(*p) plutot que sizeof(int).
Ben le problème c'est qu'on le comprend pas (le problème). Quand tu as rempli ton tableau, tu l'enregistres avec fwrite. Je ne vois pas quoi dire de plus...
Marsh Posté le 30-03-2008 à 23:03:46
bonne nuit alors
Marsh Posté le 31-03-2008 à 16:08:21
pepito17 a écrit : Et non je ne sais pas ce que je dois faire puisque je vous le demande... |
Ma boule de cristal est chez le teinturier, je ne peux pas t'aider.
Marsh Posté le 02-04-2008 à 17:21:20
Taz a écrit : std::copy + stream_iterator |
pas du C...
Marsh Posté le 29-03-2008 à 02:32:01
Bonjour tout le monde,
Je me demandais, comment fait on pour enregistrer un vecteur dans un fichier ??
Devons nous d'abord utiliser une boucle pour creer ce vecteur qui contiendra des nombre trier par ordre croissant.
Puis une deuxieme boucle qui enregistrera chaque element du vecteur dans le fichier ?
OU
Trier donc le vecteur et dés qu'un element est positionner l'enregistrer dans le fichier ?
Aidez moi parce que la je vois pas comment faire.
Merci d'avance et a tres bientot.