[C++] fonction open
Fermé
Utilisateur anonyme
-
1 févr. 2008 à 10:47
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 - 18 août 2010 à 15:13
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 - 18 août 2010 à 15:13
A voir également:
- Fonction open en c
- Open dns - Guide
- Open office gratuit mac - Télécharger - Suite bureautique
- Fonction si et - Guide
- Open cv - Télécharger - Emploi & CV
- Fonction write c ✓ - Forum C
19 réponses
dubcek
Messages postés
18587
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 mars 2023
5 583
1 févr. 2008 à 10:53
1 févr. 2008 à 10:53
ce ne sont pas des librairies, as-tu mis #include <stdio.h> au début?
En effet, ce sont des fichiers entêtes (abus de langage) désolé. J'ai bien mis stdio.h.
Ce qui est bizarre, c'est que fopen fonctionne mais pas open....
Ce qui est bizarre, c'est que fopen fonctionne mais pas open....
J'ai finalement décidé d'utiliser fopen. Le seul petit problème est qu'il crée un fichier texte en binaire (même avec le mode O_TEXT). Du coup, un message d'erreur apparait à l'ouverture du fichier avec un éditeur de texte et des caractères parasites apparaît...
Si quelqu'un à une solution...
Merci d'avance.
Si quelqu'un à une solution...
Merci d'avance.
dubcek
Messages postés
18587
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 mars 2023
5 583
1 févr. 2008 à 13:21
1 févr. 2008 à 13:21
ca dépend de ce que tu écris dedans, quel format utilises tu ?
fprintf ? write ?
fprintf ? write ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18587
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 mars 2023
5 583
1 févr. 2008 à 14:26
1 févr. 2008 à 14:26
quel format %f, %s ?
dubcek
Messages postés
18587
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 mars 2023
5 583
1 févr. 2008 à 16:03
1 févr. 2008 à 16:03
et si tu affichais un peu plus que 2 caractères à la fois ? :-)
Voici ma fonction en entier:
int Image::save_info(char* chemin_fichier)
{
FILE* test;
if((test=fopen(chemin_fichier,"w|O_TEXT"))==NULL)
{
return 0;
}
fprintf(test,"\n\n******INFORMATION ENTETE FICHIER******\n\n");
fprintf(test,"Signature: %s\n",signature);
fprintf(test,"Taille du fichier: %lld octets\n",taille_fichier);
fprintf(test,"Champ réservé: 0x%c %c\n\n",champ_reserve[0],champ_reserve[1]);
fprintf(test,"Offset: 0x%c %c\n\n",offset[0],offset[1]);
fprintf(test,"******INFORMATION ENTETE IMAGE******\n\n");
fprintf(test,"Taille de l'entête: %s\n",taille_entete);
fprintf(test,"Largeur: %d pixels\n",largeur);
fprintf(test,"Hauteur: %d pixels\n",hauteur);
fprintf(test,"Nombre de plan: %d\n",nb_plan);
fprintf(test,"Codage de couleurs: %d bits\n",codage_couleur);
fprintf(test,"Methode de compression: %s\n",methode_compression);
fprintf(test,"Taille de l'image: %d octets\n",taille_image);
fprintf(test,"Résolution horizontale: %d pixels/mètres\n",reso_hor);
fprintf(test,"Résolution verticale: %d pixels/mètres\n",reso_ver);
fprintf(test,"Nombre de couleurs dans la palette: %d\n",cou_pal);
fprintf(test,"Nombre de couleurs importantes dans la palette: %d\n",cou_pali);
fclose(test);
return 1;
}
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
1 févr. 2008 à 16:41
1 févr. 2008 à 16:41
man open donne : ( http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/open.2.html )
#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>
à inclure.
Quand le compilateur ne trouve pas une fonction et ne comprend pas les macro, 99 fois sur 100, c'est que tu n'as pas inclu le bon en tête.
#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>
à inclure.
Quand le compilateur ne trouve pas une fonction et ne comprend pas les macro, 99 fois sur 100, c'est que tu n'as pas inclu le bon en tête.
dubcek
Messages postés
18587
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 mars 2023
5 583
3 févr. 2008 à 10:10
3 févr. 2008 à 10:10
Ca ne serait pas plutôt : fopen(chemin_fichier,"w+t")
Merci Char Snipeur... je vais rajouter les librairies. Elles n'étaient pas indiqué en utilisant man sur mon pc.
dubcek: je ne sais pas, l'aide de mon compilateur m'indique que je peux utiliser "w|O_TEXT", mon compilateur ne m'indique pas d'erreur. Ceci dit, je vais essayé ta manip.
dubcek: je ne sais pas, l'aide de mon compilateur m'indique que je peux utiliser "w|O_TEXT", mon compilateur ne m'indique pas d'erreur. Ceci dit, je vais essayé ta manip.
dubcek
Messages postés
18587
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 mars 2023
5 583
4 févr. 2008 à 09:53
4 févr. 2008 à 09:53
parce qu'entre ", c'est un string et le compilateur n'a pas de raison de générer une erreur.
C'est |O_TEXT avec open, +t entre " avec fopen
C'est |O_TEXT avec open, +t entre " avec fopen
Aucun changement, toujours des caractères parasites, ce qui est étrange, c'est qu'il ne le fait que lorsque j'affiche des variables caractères %c cependant il affiche correctement les variables %s...
Ok, ça fonctionne cette fois.
Les caractères parasites étaient dû à l'absence du caractère '\0' à la fin des chaînes de caractères. Cela provoquait aussi un message d'erreur lors de l'ouverture ultérieure du fichier.
Mon programme permet de lire les informations contenues dans un fichier bitmap, de les afficher ainsi que les enregistrer dans un fichier texte dont le chemin est entré en paramètre.
Ce chemin est par exemple "../../arrow.bmp", (le chemin peut être soit absolu, soit relatif). J'aimerai que le fichier texte où j'enregistre mes infos s'appellent nom_bitmap.txt (exemple ici: arrow.txt pour le fichier arrow.bmp).
Il faut donc que j'extrait le nom du fichier bitmap en enlevant son chemin ainsi que son extention (../../arrow.bmp -> arrow)
Comment puis-je le faire svp ?
merci d'avance
Les caractères parasites étaient dû à l'absence du caractère '\0' à la fin des chaînes de caractères. Cela provoquait aussi un message d'erreur lors de l'ouverture ultérieure du fichier.
Mon programme permet de lire les informations contenues dans un fichier bitmap, de les afficher ainsi que les enregistrer dans un fichier texte dont le chemin est entré en paramètre.
Ce chemin est par exemple "../../arrow.bmp", (le chemin peut être soit absolu, soit relatif). J'aimerai que le fichier texte où j'enregistre mes infos s'appellent nom_bitmap.txt (exemple ici: arrow.txt pour le fichier arrow.bmp).
Il faut donc que j'extrait le nom du fichier bitmap en enlevant son chemin ainsi que son extention (../../arrow.bmp -> arrow)
Comment puis-je le faire svp ?
merci d'avance
dubcek
Messages postés
18587
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 mars 2023
5 583
4 févr. 2008 à 14:37
4 févr. 2008 à 14:37
en utilisant basename :
char nom[128], *pnom ;
nom=basename("../../arrow.bmp");
pnom=index(nom,"."); *pnom='\0' ;
char nom[128], *pnom ;
nom=basename("../../arrow.bmp");
pnom=index(nom,"."); *pnom='\0' ;
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
4 févr. 2008 à 14:37
4 févr. 2008 à 14:37
si tu as ton ../../arrow.bmp dans uns chane de caratère, il suffit d'enlever tout ce qui a un rapport avec le chemin relatif et l'extension.
Tu commence par parcourir ta chaine par la droite, des que tu rencontre le '.' tu sauvegarde les caractères dans une autre chaine, puis tu arrete de parcourir des que tu rencontre un caractère qui n'est pas une alphanumérique.
Ensuite, il n'y a plus qu'a inverser la chaine sauvegarde
Tu commence par parcourir ta chaine par la droite, des que tu rencontre le '.' tu sauvegarde les caractères dans une autre chaine, puis tu arrete de parcourir des que tu rencontre un caractère qui n'est pas une alphanumérique.
Ensuite, il n'y a plus qu'a inverser la chaine sauvegarde
Merci, ça fonctionne parfaitement.
Pourquoi quand je lis des octets dans un fichier bitmap, en se positionnant avec
J'ai l'impression que le
Merci d'avance
Pourquoi quand je lis des octets dans un fichier bitmap, en se positionnant avec
fseekpuis en lisant l'octet avec
fgetcj'optiens en hexa ffffffc0 au lieu de c0 sachant que je stock cette données dans une case d'un tableau de caractère (donc un octet par case) pourtant il ne me met pas d'erreur....
J'ai l'impression que le
printfme rajoute les 'f' devant ma données, pourquoi et comment l'en empêché ?
Merci d'avance
essaie #include <fcntl.h>
chico200987
Messages postés
791
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
30 juillet 2018
144
18 août 2010 à 15:13
18 août 2010 à 15:13
Je pense qu'en 2 ans et demi il a trouve la solution a son problème :D
J'espère pour lui en tout cas !
J'espère pour lui en tout cas !