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 :

Chaînes de caractères [Débutant(e)]


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Janvier 2007
    Messages : 95
    Par défaut Chaînes de caractères
    Bonsoir à tous.

    J'ai un tableau contenant des nombres entre 0 et 255. Je veux copier les éléments du tableau dans un fichier avec fprintf. Par contre je veux copier le caractère correspondant au nombre.

    Voici comment je m'y prends dans un boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(fichier, "%c", resultat[i]);
    Voici mon problème : tout fonctionne bien sauf quand resultat[i] égal 0. Il doit rien écrire dans le fichier (caractère NULL) et donc le zéro est perdu à la lecture du fichier !! . Comment faire pour écrire le caractère NULL (pour pouvoir lire le zéro) ?

    Merci.

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Non, le zero n'est pas perdu à la lecture du fichier. Essaie de compiler et d'exécuter ce code pour t'en convaincre:
    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>
    #include <stdlib.h>
     
    #define SIZEOF_TAB(tab) (int) (sizeof(tab)/sizeof(*(tab)))
     
    int main(void)
    {
        int i;
        int c;
        FILE *fp = NULL;
        int caracteres[] = {72, 73, 74, 75, 0, 97, 98, 99, 10};
     
        /* On ouvre le fichier test.txt en écriture */
        fp = fopen("test.txt", "w");
        if (fp != NULL)
        {
            for (i = 0; i < SIZEOF_TAB(caracteres); ++i)
    	{
    	    fprintf(fp, "%c", caracteres[i]);
    	}
            fclose(fp), fp = NULL;
        }
     
        /* On ouvre le fichier test.txt en lecture */
        fp = fopen("test.txt", "r");
        if (fp != NULL)
        {
            while ((c = fgetc(fp)) != EOF)
    	{
    	    printf("%d ", c);
    	}
    	fclose(fp);
        }
     
        return EXIT_SUCCESS;
    }
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    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 bert_
    Bonsoir à tous.

    J'ai un tableau contenant des nombres entre 0 et 255. Je veux copier les éléments du tableau dans un fichier avec fprintf. Par contre je veux copier le caractère correspondant au nombre.

    Voici comment je m'y prends dans un boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(fichier, "%c", resultat[i]);
    Voici mon problème : tout fonctionne bien sauf quand resultat[i] égal 0. Il doit rien écrire dans le fichier (caractère NULL) et donc le zéro est perdu à la lecture du fichier !! . Comment faire pour écrire le caractère NULL (pour pouvoir lire le zéro) ?

    Merci.
    Il n'est pas perdu, simplement tu ne sais pas l'afficher (et moi non plus) car c'est un caractère non imprimable. isprint() permet de faire le tri et d'utiliser "%c" (imprimable) ou "%d" (non imprimable) selon les cas, au moment de l'affichage.
    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
     
    #include <stdio.h>
    #include <ctype.h>
     
    int main (void)
    {
       int i = 0;
       while (i < 256)
       {
          if (isprint (i))
          {
             printf ("'%c' ", i);
          }
          else
          {
             printf ("%3d ", i);
          }
          i++;
     
          /* mise en page */
          if (i % 16 == 0)
          {
             printf ("\n");
          }
       }
       return 0;
    }

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Réponses: 2
    Dernier message: 18/10/2003, 14h42
  3. Chaînes de caractères
    Par Zazeglu dans le forum C
    Réponses: 3
    Dernier message: 28/08/2003, 16h20
  4. Inverser une chaîne de caractères
    Par DBBB dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/03/2003, 11h09
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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