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 :

Probleme de type "Char "


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 68
    Par défaut Probleme de type "Char "
    Bonjour a tous,
    je suis debutant, et j ecris un pseudo programme de copie de fichier,
    binaire.
    pour ce faire j'utilise un buffer de 1024 octets.
    le probleme est que je ne sais pas initialiser le buffer avec un caractere 'nul'.
    je m explique :
    vu que mon buffer a une taille de 256*4 (soit 1024 octets),
    quand j arrive a la fin du fichier a copier, il reste forcement de la place dans le buffer
    (a moins que le fichier soit un multiple exact de 1024, mais bon...).
    c est la que je ne sais pas comment faire.
    j aurais voulu initialiser mon buffer avec un caractere special, puis remplir mon buffer avec le fichier, puis ecrire le buffer a condition que le caractere ne soit pas
    le fameux caractere special.
    de sorte je n augmente pas la taille du fichier source et ne le modifie pas.
    le probleme est que je ne trouve pas ce fameux caractere special ...

    pouvez vous m aider ???

    cordialement,
    size

  2. #2
    Membre chevronné
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Bonjour!
    Surtout, n'initialise jamais ton buffer. Il te suffit de compter au fur et à mesure le nombre de caractères que tu as lus.
    A la fin de la boucle, il te suffira de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    buffer[nombreLus]='\0';

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 68
    Par défaut
    oui, merci, maintenant mon fichier copié fait exactement la meme taille que le fichier d origine
    mais j ai un nouveau probleme, le fichier sortis n est pas le meme :
    j ai copié un binaire, et je ne peux pas execute la copie ...
    je comprends pas, pourtant ils font exactement la meme taille...

  4. #4
    Membre chevronné
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Et pour le réécrire, tu écris sur le nombre que tu as compté ou sur
    qui te détecte le '\0' final et ne le compte pas

  5. #5
    Membre chevronné
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Quelle fonction as tu utilisé? fread() et fwrite(), je suppose...
    Verifie que tu as bien ouvert tes fichiers en mode binaire (rb et wb), sinon, il te fait des conversions de caractères spéciaux

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 68
    Par défaut
    ben sur le nombre que j ai compté, sinon ca sert a rien, non?
    d ailleurs ca ne marche plus pour rien, les *.kpg ne fonctionnent plus non plus une fois copiés ...
    alors que tout a l heure, meme si la taille etait un peu plus grande ( taiile du fichier copié) ca fonctionnait ...
    je comprends plus rien la ...

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 68
    Par défaut
    j utilise fgetc et fprintf, mais peut etre fprintf n est il pas adapté?

  8. #8
    Membre chevronné
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Regarde le mode d'ouverture (dans fopen) , nos posts se sont croisés
    Et utilise fread et fwrite puisque tu veux recopier tes fichiers à l'identique

  9. #9
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 68
    Par défaut
    j ouvre bien mes fichiers en binaire,
    je ne peux pas lire avec fread et fwrite en fait.
    pour le moment je ne fais que copier, mais a terme, je compte faire quelques operations sur le buffer avant de le reecrire( sorte de hachage ).

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par joellel
    Bonjour!
    Surtout, n'initialise jamais ton buffer. Il te suffit de compter au fur et à mesure le nombre de caractères que tu as lus.
    A la fin de la boucle, il te suffira de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    buffer[nombreLus]='\0';
    Quel rapport ? Il s'agit d'un fichier binaire. Il faut travailler en (adresse, longueur).

  11. #11
    Membre chevronné
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Quel rapport ? Il s'agit d'un fichier binaire. Il faut travailler en (adresse, longueur).
    Je n'avais pas réalisé au début qu'il s'agissait de binaire...

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

Discussions similaires

  1. UPDATE en ajoutant un 0 sur un champ de type "char"
    Par doum2 dans le forum Requêtes
    Réponses: 1
    Dernier message: 08/03/2006, 14h22
  2. Probleme avec encodage de simple quote
    Par linkowich dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2005, 13h16

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