IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Problème avec la fonction feof ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Par défaut Problème avec la fonction feof ?
    Bonjour, je rencontre un problème avec un programme qui change la luminosité d'une image PPM.
    Le fonctionnement est simple on écrit dans la console : [nom du programme] [nom de l'image que l'on veut modifier].PPM [nom de l'image modifié].PPM

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #include <stdio.h>
     
    main(int arg , char **argv[]) {
    	FILE *f,*g;
    	printf("1er argument : %s\n" ,argv[1]);
    	printf("2eme argument : %s\n" ,argv[2]);
    	f = (FILE *) fopen (argv[1], "r");
    	g = (FILE *) fopen (argv[2], "w");
    	int i;
    	printf("Entrez une intensite : \n");
    	int cte;
    	scanf("%d",&cte);
    	int cpt=0;
    	i=fgetc(f);
    	while (!feof(f)) {
    		if (cpt<3) {
    			fputc(i,g);
    			if (i==10) {
    				cpt++;
    				}
    			}
    		else {
    			i=i-cte;
    			if (i<0) { 
    				i=0;
    				}
    			if (i>255) {
    				i=255;
    				}
    			fputc(i,g);
    			}
    		i=fgetc(f);
    		}
    	fclose(f);
    	fclose(g);
    }
    Quand je compile ce petit script sous linux avec gcc, le programme fonctionne sans problème.
    Mais si je compile ce script avec Code::blocks sur Windows le programme ne fonctionne pas. C'est à dire que le fichier est bien crée et quand j'ouvre ce fichier avec Notepad++ je constate qu'il manque des caractères, en faite mon pointeur f n'a pas été jusqu’à la fin du fichier de départ.
    J'ai fait un test avec un simple programme qui recopie tout le fichier de départ mais même problème je constate qu'une partie est recopié.

    Si quelqu'un à une réponse a mon problème
    En vous remerciant

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Windows n'écrira et ne lira pas les caractères non-imprimables en mode texte.
    Il faut donc passer en mode binaire avec l'option "b" lors du fopen.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fopen("toto.PPM", "rb");

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Par défaut
    Merci beaucoup c'est super sympa et en plus rapide, il fallait bien rajouter au FOPEN 'rb' et 'wb'.
    Cependant je voudrais une petite explication si ce n'est pas trop demandé .
    A la fin de chaque fichier existe t-il un caractère "invisible" qui permet de définir la fin de ce fichier ? Si oui ce caractère fait-il parti de la table Ascii ?

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Citation Envoyé par kevine2710 Voir le message
    A la fin de chaque fichier existe t-il un caractère "invisible" qui permet de définir la fin de ce fichier ? Si oui ce caractère fait-il parti de la table Ascii ?
    La réponse est « non », mais tu peux lire cette discussion où l'on parlait de la même chose : http://www.developpez.net/forums/d12...ification-eof/

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Par défaut
    Merci je viens de lire et j'ai compris

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec la fonction feof
    Par Fog-Thunder dans le forum C
    Réponses: 6
    Dernier message: 19/01/2013, 10h54
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo