Les fichiers [problème]
Fermé
rogina1
Messages postés
80
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
20 septembre 2008
-
4 mars 2008 à 18:04
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 - 6 mars 2008 à 20:55
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 - 6 mars 2008 à 20:55
A voir également:
- Les fichiers [problème]
- Wetransfer gratuit fichiers lourd - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Explorateur de fichiers - Guide
- Fichiers bin - Guide
- Fichiers epub - Guide
2 réponses
cijad
Messages postés
30
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
8 mai 2008
60
4 mars 2008 à 21:32
4 mars 2008 à 21:32
Salut,
je suis pas sûr du langage, c'est bien du langage C ? (je ne reconnais pas certains trucs dans ton code)
Quoi qu'il en soit je dirait qu'à priori tu peux utiliser les deux mais à condition d'être cohérent. Si tu utilise un fichier texte il faut l'ouvrir en tant que tel (idem si c'est un fichier binaire). Tout se joue au niveau du fopen :
A noter, que par défaut, si tu met "w" comme second argument il considère que c'est "wt".
J'espère ne t'avoir pas dis de bétises, j'ai vraiment un doute sur le langage. Si c'est du C je trouve le code très étrange. Si ça n'en est pas, ma foi, ça y ressemble quand même un peu alors tu as des chances pour que cela fonctionne pareil.
je suis pas sûr du langage, c'est bien du langage C ? (je ne reconnais pas certains trucs dans ton code)
Quoi qu'il en soit je dirait qu'à priori tu peux utiliser les deux mais à condition d'être cohérent. Si tu utilise un fichier texte il faut l'ouvrir en tant que tel (idem si c'est un fichier binaire). Tout se joue au niveau du fopen :
fich=fopen(nom,"wt");/*ouvrira en lecture en mode texte (par défaut)*/ fich=fopen(nom,"wb");/*ouvrira le fichier en mode binaire (donc illisible par un traitement de texte)*/
A noter, que par défaut, si tu met "w" comme second argument il considère que c'est "wt".
J'espère ne t'avoir pas dis de bétises, j'ai vraiment un doute sur le langage. Si c'est du C je trouve le code très étrange. Si ça n'en est pas, ma foi, ça y ressemble quand même un peu alors tu as des chances pour que cela fonctionne pareil.
cijad
Messages postés
30
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
8 mai 2008
60
6 mars 2008 à 19:44
6 mars 2008 à 19:44
Ah ba cool, je connais ^^
J'ai une bonne nouvelle pour toi... ton programme tourne sur mon pc (je sais pas si c'était le cas pour toi). J'entends par là qu'il s'exécute et qu'il crée bien un fichier. Donc la gestion du fichier n'est pas le problème.
En fait tu as un premier problème au niveau de la conception de tes variables. Je ne vois pas pourquoi tu utilises une structure en fait. Une structure devient utile quand tu veux rassembler plusieurs variable derrière une même entité. Là concrètement tu ne gère qu'un seul objet, le tableau tab. Pas besoin de le rassembler tout seul dans une structure. Tu peux te contenter de déclarer un tableau d'entiers (int tab[3];) comme tu l'as fait d'ailleurs.
Bon ça c'est pas trop génant mais c'est l'erreur la moins gênante mais fais y attention parce que si tu conçois mal la modélisation de ton problème tu ne peux que t'emeller les pinceaux... et c'est un peu ce que tu as fait là en fait. Deux petits trucs à corriger pour arriver au résultat souhaité (enfin si j'ai bien compris) :
-ligne 20
-ligne 36
Voilà avec ces deux corrections ça marche normalement. Tu peux avoir un fichier illisible si tu tape fichier au lieu de fichier.txt. Tu dois donner l'extension à la fonction fopen sinon ton fichier n'est pas reconnu comme fichier texte pas windows.
Voilà, je te laisse étudier ça. Redis moi si ça fonctionne maintenant. J'essayerais aussi de t'écrire un code avec quelques conseils si ça t'intéresse.
PS: peux tu me dire à quoi servent les "pragma", je n'avais jamais vu ça.
bon courage^^
J'ai une bonne nouvelle pour toi... ton programme tourne sur mon pc (je sais pas si c'était le cas pour toi). J'entends par là qu'il s'exécute et qu'il crée bien un fichier. Donc la gestion du fichier n'est pas le problème.
En fait tu as un premier problème au niveau de la conception de tes variables. Je ne vois pas pourquoi tu utilises une structure en fait. Une structure devient utile quand tu veux rassembler plusieurs variable derrière une même entité. Là concrètement tu ne gère qu'un seul objet, le tableau tab. Pas besoin de le rassembler tout seul dans une structure. Tu peux te contenter de déclarer un tableau d'entiers (int tab[3];) comme tu l'as fait d'ailleurs.
Bon ça c'est pas trop génant mais c'est l'erreur la moins gênante mais fais y attention parce que si tu conçois mal la modélisation de ton problème tu ne peux que t'emeller les pinceaux... et c'est un peu ce que tu as fait là en fait. Deux petits trucs à corriger pour arriver au résultat souhaité (enfin si j'ai bien compris) :
-ligne 20
scanf("%s",nom);//j'ai juste retiré l'espaceL'espace ici te faisait des problèmes. Je ne saurais pas te dire exactement pourquoi, mais il faut que le contenu entre guillemet corresponde exactement à ce que tu va rentrer (je trouve que scanf est très compliqué à gérer)
-ligne 36
fprintf(fich, "%d ", tab[i]);//j'ai retiré le endr.et retire la déclaration de la strucure et de endr qui sont inutiles. En fait, ce que tu faisait c'est que tu crée deux objets différent dans ton programme. Le premier est crée ligne 9 (enter endr;//te crée une structure de type enter et crée un tableau d'entier au passage endr.tab) le second ligne 14 (int tab[3];//te crée un second tableau ,nommé cette fois simplement tab), en mémoire ces deux tableau sont totalement indépendant. Pourtant si tu regarde bien dans ton code, dans la première boucle tu ecrit dans tab alors que dans la seconde tu lis dans endr.tab. Donc forcément il ecrit pas ce que tu veux dans le fichier.
Voilà avec ces deux corrections ça marche normalement. Tu peux avoir un fichier illisible si tu tape fichier au lieu de fichier.txt. Tu dois donner l'extension à la fonction fopen sinon ton fichier n'est pas reconnu comme fichier texte pas windows.
Voilà, je te laisse étudier ça. Redis moi si ça fonctionne maintenant. J'essayerais aussi de t'écrire un code avec quelques conseils si ça t'intéresse.
PS: peux tu me dire à quoi servent les "pragma", je n'avais jamais vu ça.
bon courage^^
5 mars 2008 à 17:19
concernant ce que tu a dit..
j'ai utilisé le "w" simplement prcque j'ai un fichier de données ((qui contient des enregistrements))
je crois que tu n'a pas compris ma question ..
je veut tout simplement créer un tableau de QlQ chose (caractères, entiers, ..) mais de tel sorte qu'il puisse etre concervé après l'atteinte de mon pc, c'est pour ça que je veux le sauvgarder dans un fichier..
dans mon code source, j'ai introduit ce tableau comme une structure de donnée mais ça na pas marché, et donc je me demande
*est ce que le pb est dans le code source??..
ou bien:
*Il faut que j'utilise un autre type de fichier..<<et ici arrive le "wb" et le "wt"..
stp, si tu as une idée tu me dit..
merci d'avance..
5 mars 2008 à 18:35
Si tu rencontres un problème, c'est qu'il doit y avoir une erreur dans le code. En effet tu n'utilises ton fichier que pour écrire. Il n'y a donc pas de raison pour que l'ouverture échoue. Si tu me confirme que c'est du C je t'aiderais à le débugguer si tu veux.
Sinon tu as raison d'utiliser un fichier pour stocker tes données puisque tu veux les conserver. Par contre le type de fichier dépend de ce que tu veux en faire après. Si c'est simplement pour les récupérer avec ton programme, ça peut être un fichier binaire (qu'on appel parfois à tort fichier de données, d'où le malentendu peut être) (donc "wb"). Tes données seront alors en quelque sorte protégées puisqu'un logiciel de traitement de texte ne saura pas le lire. Par contre si tu veux pouvoir jeter un coup d'œil sur ton fichier (pour vérifier si il s'est bien écrit en l'ouvrant avec le bloc note par exemple) il faut utiliser un fichier texte (donc "w").
Je regarderais ça plus tard.
6 mars 2008 à 12:44
6 mars 2008 à 20:55
En C++ ton code ressemblerait à ça:
La différence ? Exactement la même qu'entre le C et le C++.
Bien à vous,
M.
PS:
Les pragma sont des directives de compilations propres à des compilateurs et donc en dehors de tout standard. Bien que certains soient assez répandus, il n'est pas assuré que tous les compilateurs les comprennent.