[C] Chaines de caractéres

Résolu
UNIX/VI/SHELL Messages postés 89 Statut Membre -  
UNIX/VI/SHELL Messages postés 89 Statut Membre -
Bonjour,

Je voudrais, réaliser un petit programme qui permette de taper, du texte, elle lorsque l'utilisateur tape sur 'V', cela provoque l'affichage de tous le textes que l'utilisateur à pu taper. Merci de me montrer en code C.

Merci d'avance pour votre aide.
Configuration: Mac OS X
Safari 419.3

4 réponses

  1. spidag
     
    Bonjour,
    le programme lis le buffer jusqu'au \n, et si tu met un s, tu as automatiquement le texte avant le v qui s'affiche.
    Lors de la validation de la ligne.
    N'ayant pas de compileur C sur mon lieu de taf, je te laisse tester.
    #include <stdio.h>
    char* tab;
    char c;
    int main() {
    while (c=getchar(),c!='\n') {
    if (c=='v' || c=='V') printf("%s",tab);
    *tab=c;
    *tab++;
    }
    }
    0
  2. c-moi Messages postés 82 Statut Membre 10
     
    Bonjour,

    Je pense qu'il ya des soucis de dépassement mémoire dans le tab. Après, je n'ai pas, non plus, de compilo sous la main (enfin, ça se fait pas de s'amuser sur des machines que l'on administre) mais je serai plutôt tenté de mettre une taille max au buffer d'entrée.

    Après, c'est l'idée : lire l'entrée standard jusqu'à trouver un "V" et là, recracher tout ce qu'on a lu avant. Pour éviter les problèmes de buffer overflow, on peut faire un "tourniquet" : les premiers caractères sont écrasés par les derniers.

    #include <stdio.h>
    
    
    #define BUFFER_MAX_SIZE 256
    
    int main(){
    
      char buffer[BUFFER_MAX_SIZE];
      char c;
      int i = 0;
    
    
      while(1){
        c = (char ) getchar();
    
        if( c == 'V' ){
          buffer[i%BUFFER_MAX_SIZE] = '\0';
          printf("%s\n", buffer);
          break;
        }
        buffer[i%BUFFER_MAX_SIZE] = c;
        i++;
      }
    
      return 0;
    }
    
    


    On peut avoir la même chose sans tourniquet, évidemment... Ici, après un V, on tape Entrée (newline) et tout ce qui est avant est répété.

    Bon courage pour la suite

    c-moi
    0
  3. UNIX/VI/SHELL Messages postés 89 Statut Membre 7
     
    Merci pour votre aide !
    0