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

Linux Discussion :

C , stdin et chaine de caractères


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Par défaut C , stdin et chaine de caractères
    Bonjour.
    J'écris un programme C sous Fédora (mais qui devra être portable sous BSD)
    , qui lors d'une instruction, doit mémoriser une chaine de caractères tapée à l'écran. Mais l'utilisateur doit avoir la possibilité de taper sur entrée sans que l'instruction de mémorisation de chaine soit arrétée.
    (Donc en fait l'utilisateur doit pouvoir entrée tout un texte en une seule fois avec paragraphes, sauts de lignes...)

    Est-ce possible? Comment faire?

    Mais ensuite je dois pouvoir passer à l'instruction suivante quand le texte à entrée est fini. J'aimerais donner a la possibilité à l'utilisateur de le faire en apuiyan sur une série de touches (genre Ctrl+Alt+quelque chose).
    L'utilisation des signaux est-elle appropriée dans ce cas la?

    Merci.

  2. #2
    Membre confirmé Avatar de yashiro
    Inscrit en
    Mars 2004
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 214
    Par défaut
    En réalité pour lire de cette façon, je pense que tu devrais écrire une fonction de lecture qui lit au clavier caractère par caractère pour pouvoir contrôler les caractères particuliers comme les caractères spéciaux comme "\n", "\t","\v" etc... et de ce fait réaliser ta lecture de texte structuré en ligne, paragraphes et tout ce que tu veux.

    En fait, tu pourra dans ta fonction lire sans échon puis affucher le caractère lu.
    Bonne chance

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Cela devrait plus être sur le forum C, mais je te donne la réponse...

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    void saisie ( void )
    {
    char *chaine = NULL ;
    char *tmp=NULL ;
    char   c ;
    int      i=0 ;
    int      chunk=256 ;
    int      tot=256 ;
    int      ERROR=0 ;
     
     
    chaine = calloc ( 256, 1 );
     
    /* Admettons que ton code de fin soit "-q" */
     
    fprintf ( stderr, "Entrez votre texte : \n");
    for ( ; ; )
      {
    /* lecture d'un caractère */
         scanf ( "%c", &c );
     
    /* Condition d'arret */   
         if ( (c == 'q') && (i != 0) )
           {
              if ( chaine[i-1] == '-' )
                {
                   chaine[i-1] = '\0' ;
                   break ;
                }
           }
     
    /* remplissage de la chaine */
         chaine[i] = c ;
         i = i + 1 ;
     
    /* Verification de la lngueur et ajustement */
         if ( (i % 256) == 0 )
           {
               tmp = realloc ( chaine, (tot+chunck) );
               if ( tmp == NULL )
                 {
                    ERROR = 1 ;
                    break ;
                 }
               chaine = tmp ;
               tot = tot + chunk ;
           }
      }
     
    /* Traitement des erreurs */
    if ( ERROR )
      {
      }
     
    /* Sinon */
    ....
    ...
     
    }

  4. #4
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Par défaut
    Merci pour vos réponses!

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Crypter une chaine de caractères
    Par Yabo dans le forum Réseau
    Réponses: 18
    Dernier message: 19/11/2004, 23h04
  3. Réponses: 9
    Dernier message: 17/01/2003, 11h45
  4. Lire Une Chaine De Caractères
    Par Jonathan_Korvitch dans le forum C
    Réponses: 12
    Dernier message: 07/01/2003, 05h37
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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