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 :

Retour à la ligne ou caractère 


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Par défaut Retour à la ligne ou caractère 
    Bonjour, je cherche à récuperer des infos contenues dans un periphérique et j'ai un petit problème.

    En fait, j'ai un logiciel qui permet de récuperer ces infos déjà qui est fonctionnel, je dois développer un module dans un autre logiciel qui aura les mêmes fonctionnalités (mais langage différent...).

    Comme je n'ai pas les sources du premier logiciel il me sert de vérification et j'ai pu voir un petite erreur :

    en fait je recupère les infos sous forme de fichier texte (j'écris le flux que me renvoie le périphérique), et dans le logiciel que je développe j'obtiens un retour à la ligne, alors qu'avec l'autre il me met un carré dans le fichier texte. Sur les autres caractères pas de problème...

    J'écris cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (i = 2; i <= Receiving_Message.Length; i++) {
                                    fprintf(FichierDate, "%c", Receiving_Message.Data[i-1]);
     
                                    }
    Quelqu'un saurait d'où provient cette différence ? Merci pour vos eclaircissements

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2005
    Messages : 88
    Par défaut
    Il me semble que les carrés () dans un fichier .txt correspondent a un retour à la ligne ("\n").
    Donc a priori tu recupères bien la même chose

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Bonjour,

    Citation Envoyé par RR instinct
    Bonjour, je cherche à récuperer des infos contenues dans un periphérique et j'ai un petit problème.

    En fait, j'ai un logiciel qui permet de récuperer ces infos déjà qui est fonctionnel, je dois développer un module dans un autre logiciel qui aura les mêmes fonctionnalités (mais langage différent...).

    Comme je n'ai pas les sources du premier logiciel il me sert de vérification et j'ai pu voir un petite erreur :

    en fait je recupère les infos sous forme de fichier texte (j'écris le flux que me renvoie le périphérique), et dans le logiciel que je développe j'obtiens un retour à la ligne, alors qu'avec l'autre il me met un carré dans le fichier texte. Sur les autres caractères pas de problème...

    J'écris cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (i = 2; i <= Receiving_Message.Length; i++) {
                                    fprintf(FichierDate, "%c", Receiving_Message.Data[i-1]);
     
                                    }
    Quelqu'un saurait d'où provient cette différence ? Merci pour vos eclaircissements
    1) "un carré dans le fichier texte" ==> Essaye d'être plus précis, s'il-te-plaît : quel est le code du caractère correspondant au "carré" dans le fichier obtenu ? [1]

    2) Peux-tu nous montrer le code qui ouvre le fichier "FichierDate" ?

    Cordialement,
    DS.

    [1] - Il ne s'agit pas de deviner : il faut vérifier avec un éditeur hexadécimal. Un "carré" peut être affiché par plusieurs caractères différents. Certes, ici, on doit pouvoir deviner sans trop de risque de se tromper mais c'est une bonne habitude de toujours vérifier.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Par défaut
    Désolé pour l'imprécision.

    Sur le "bon" fichier (c'est à dire sur celui récuperer avec le logiciel déjà fonctionnel), j'ai une valeur héxa à cet endroit qui est 0A, alors qu'avec celui que je récupère, j'ai deux valeurs à cet endroit 0D 0A.

    De plus quand je l'ouvre avec un éditeur héxa (CR-exact en l'occurence), dans le premier fichier j'ai "." alors que dans le deuxième j'ai "..".

    Quand je l'ouvre avec le bloc notes, j'ai ce fameux carré dans le premier et j'ai un retour à la ligne dans le deuxième.

    Enfin quand je l'ouvre avec le logiciel qui est censé le lire, le premier ne fait pas d'erreur et lit correctement les infos, le second fait une erreur de sortie de tableau (erreur logique puisque j'ai des octets en trop dans le deuxième quand je fait propriétés).

    Est-ce assez précis ou faut-il que je rajoute des choses pour que vous puissiez m'aider ?

  5. #5
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Citation Envoyé par RR instinct
    Désolé pour l'imprécision.

    Sur le "bon" fichier (c'est à dire sur celui récuperer avec le logiciel déjà fonctionnel), j'ai une valeur héxa à cet endroit qui est 0A, alors qu'avec celui que je récupère, j'ai deux valeurs à cet endroit 0D 0A.
    Au lieu de \n, tu as \r\n, cela dépend du système, parfois si tu l'ouvre avec un éditeur externe sur un système et que tu sauvegardes le contenu, les \n sont remplacé par des \r\n et vice-versa.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Par défaut
    En effet, dans le premier j'ai à chaque fois des "\n" (0A en héxa) et dans le deuxième, j'ai "\r\n" (0D 0A en héxa).

    Pourtant je ne fait rien de plus qu'écrire les caractères dans un fichier, est-ce que le mode d'ouverture du fichier peut être la cause de ce problème ?

    comment puis je faire pour éviter d'ecrire ce 0D avant chaque 0A ? Sachant que je peux avoir 0D tout seul dans les deux fichiers, je ne peux pas tester la valeurs et ne pas l'ajouter.

    Merci de m'aider en tout cas.

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par David.Schris
    2) Peux-tu nous montrer le code qui ouvre le fichier "FichierDate" ?

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Par défaut
    Eh bien en fait c'est un code java qui l'ouvre et en essayant de supprimer les 0D avec l'éditeur héxa (il y a 7 occurences à supprimer à titre indicatif), le fichier est ouvert correctement.

    Et quand je compare les positions des 7 occurences de ce 0D 0A, j'ai à chaque fois un saut de ligne si j'ouvre avec le bloc note.

    Voici le code java (enfin le début) :

    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
    public static void readIdentification(String file, int offset, int length)
    	{
    		byte [] buf = new byte[length+offset];		
    		BufferedInputStream fs = null;		
    		try
    	    {
    //			 Ouverture du fichier passé en paramètre dans la ligne de commande
    			FileInputStream channel = new FileInputStream(file);
    			fs = new BufferedInputStream (channel);
    			InputStreamReader in = new InputStreamReader(fs, "8859_5");
    			//Lecture des n premiers octets du fichier. n est passé en paramètre
    			int nb = fs.read(buf, 0, length+offset);
     
    			//pour commencer dans le buffer à lire à partir de la postion ou se trouve le num du fichier
    			offset=offset+5; 	
     
    			for (int i = 0; i < cardNumber.length; i++)
    			cardNumber [i] = (char) buf [offset + i];
    ...
    ...
    }

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par RR instinct
    [...] le fichier est ouvert correctement. [...]
    Ca, on le saura quand tu nous aura montré la bonne partie du code.

    Pour rappel :
    - le premier bout de code que tu nous a montré était en C (enfin, ça y ressemble) et ECRIVAIT dans un fichier (avec fprintf()) ;
    - je t'ai demandé de nous montrer le code ouvrant ce fichier (sous-entendu : dans lequel tu ECRIVAIS) ;
    - tu nous montres du code Java qui ouvre un fichier en LECTURE (cf. "FileInputStream").

    Je répète ma question en la complétant : peux-tu nous montrer le code qui ouvre le fichier "FichierDate" en ECRITURE pour ECRIRE dedans avec la fonction fprintf() ?

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Par défaut
    Citation Envoyé par David.Schris
    Ca, on le saura quand tu nous aura montré la bonne partie du code.

    Pour rappel :
    - le premier bout de code que tu nous a montré était en C (enfin, ça y ressemble) et ECRIVAIT dans un fichier (avec fprintf()) ;
    - je t'ai demandé de nous montrer le code ouvrant ce fichier (sous-entendu : dans lequel tu ECRIVAIS) ;
    - tu nous montres du code Java qui ouvre un fichier en LECTURE (cf. "FileInputStream").

    Je répète ma question en la complétant : peux-tu nous montrer le code qui ouvre le fichier "FichierDate" en ECRITURE pour ECRIRE dedans avec la fonction fprintf() ?
    Oups désolé Je suis un peu à la masse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FILE *FichierDate ;
    FichierDate = fopen("Dechargement.txt", "w");
    Voici l'ouverture du fichier

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/05/2014, 10h40
  2. Caractère de retour à la ligne.
    Par Pari dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 18/03/2009, 09h59
  3. [PC] Caractère de retour à la ligne
    Par Lnanau dans le forum Cobol
    Réponses: 7
    Dernier message: 14/04/2006, 11h28
  4. problème de caractère de retour à la ligne
    Par greg2 dans le forum SQL
    Réponses: 2
    Dernier message: 17/02/2006, 16h51
  5. [SQL server 2005] caractère de retour à la ligne
    Par Louis-Guillaume Morand dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/02/2006, 14h34

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