CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

fonction fopen(), question

lord_kalipsy
lord_kalipsy
Niveau 10
10 avril 2004 à 03:55:53

Bonzoir :)

Dans mon livre sur le C on m´explique la fonction fopen pour ouvrir des textes mes on explique pas beaucoup comment elle foncitone pour ouvrir les fichier binaire . .. et j´aimerai savoir comment sa marche . ..

de plus je voulais savoir s´il est possible d´ouvrir des images sans SDL/DirectX/Opengl ( j´ai trouver une jeu a la mario en 2d sur le web avec sa source et il n´y a pas de ces librairies . .. et je n´arrive pas a comprendre comme il fait . ..)

merci :)

Altonfrere
Altonfrere
Niveau 10
10 avril 2004 à 11:21:27

Les fichiers, quel que soit leur type, peuvent s´ouvrir avec fopen. Il existe d´autres fonctions mais contente toi de celle ci pour le moment.

Le seul moyen de différencier le type binaire du mode texte est le 2 paramètre de la fonction :

fopen("monfichier.txt","rt");

pour ouvrir en lecture ( la lettre " r") un fichier texte ( la lettre " t").

fopen("monfichier.dat","rb");

ouverture en lecture seulement pour un fichier binaire.

Essaie de trouver la doc du fopen pour connaitre tous les autres paramètres, car il y en a plusieurs ( ouverture en lecture/écriture, mode append, etc...)

Ensuite suivant le mode que tu auras choisis ( texte ou binaire) tu pourras utiliser des fonctions adaptées pour lire/écrire dans ce fichier :

- fprintf, fscanf pour les fichiers textes UNIQUEMENT
- fread, fwrite pour les fichiers binaires la plupart du temps mais aussi pour les fichiers textes

Exemple :

FILE *pFile;
char Buffer[1024];
int nRead;

pFile = fopen("fichier.dat","rb");

if ( pFile)
{
while(!feof(pFile))
{
nRead = fread(Buffer,sizeof(char),1024,pFile);
printf("Lecture de %d octets\n",nRead);
}
}
fclose(pFile);

Cette boucle lira donc un fichier binaire en entier par bloc de 1024 octets ( sauf le dernier qui sera surement < 1024)

Pour lire des images il te faudra connaitre le format de ces fichiers ( comment ils sont structurés et codés/compactés..). Et comme ca tu seras en mesure d´intérpréter les données que tu lis avec fread.

Altonfrere
Altonfrere
Niveau 10
10 avril 2004 à 11:26:03

Pour connaitre les différents formats d´image, il existe un site qui regroupent a peu prés tous les formats existants :

http://www.wotsit.org/search.asp?s=graphics

Altonfrere
Altonfrere
Niveau 10
10 avril 2004 à 11:33:17

petite correction :

if ( pFile)
{
. ..
fclose(pFile);
}

:)

lord_kalipsy
lord_kalipsy
Niveau 10
10 avril 2004 à 16:18:53

Ha . .. la je comprend, merci :)

lord_kalipsy
lord_kalipsy
Niveau 10
10 avril 2004 à 18:54:32

Donc techniquement c´est possible de lire des images avec fread, mais on les affichent avec fput ?

JeanYvesYves
JeanYvesYves
Niveau 10
10 avril 2004 à 19:47:05

Tu peux ouvrir tout fichier avec fopen, meme les images donc.

Pour comprendre le mode binaire du fopen, il faut redescendre un étage en dessous :

Chaque fichier, avant meme d´etre une image, un exe, ou quoique ce soit, est avant tout une suite d´octets.

les fonctions de lecture permettent de récupérer ces octets dans l´ordre, et de les écrire ailleurs par la suite, ou alors de les interpréter ( selon le codage de l´image)

Donc oui tu peux lire une image avec fread,
fput ( ou fwrite) te permet d´écrire dans un fichier, donc tu peux refaire une image avec fwrite, sans utiliser OpenGL/SDL...
Tu peux modifier ton image en modifiant les octets lus, etc ! !!
D´ailleurs, lire et écrire les BMP n´est pas tres dur...

j´aime pas quand tu dis " on les affichent avec fput ? "
car ce n´est pas vrai ! !
pour les afficher a l´écran, la, on n´est plus dans la lecture de fichiers, on est en " routine graphiqe"

Altonfrere
Altonfrere
Niveau 10
10 avril 2004 à 20:48:51

NON ! ! :)

Quand on dit " lire un fichier" ca veut dire récupérer les données d´un fichier pour les transférer en mémoire. Si tu souhaites afficher les données d´une image à l´écran ( ce qui est très différent!), il te faudra utiliser une librairie graphique capable d´envoyer des données à la carte vidéo ( DirectX, OpenGL, SDL, GDI & Cie...). Mais tu devras avant cela transformer ces données pour qu´elles aient un sens pour la carte vidéo ( transformer les octets au format vidéo utilisé : résolution, nombre de bits pour coder les couleurs etc..).

Une image est toujours sauvegardée dans un format bien précis ( cf Sauver sous/Save as de Photoshop ou autre logiciel). Tu auras une dimension, un mode de représentation des pixels ( avec palettes ou non) etc... Toutes ces informations doivent être prises en compte si tu souhaites charger et afficher toi même une image.

C´est surement pour cela que beaucoup préfèrent passer par une librairie qui gère déjà tout ca car cela peut demander beaucoup de boulot si le format est complexe, cf jpeg et son mode de décompression. Pour débuter il vaut mieux commencer par les formats TGA ou BMP, dans un premier temps non compressé puis ensuite tu pourras tenter de gérer le format compressé ( compression RLE).

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment