Forum Clubic

Chaine de caractères - Lire caractère par caractère

Bonjour,
Comment peut lire une chaine de caracère (une phrase) caractère par caractère pour pouvoir appliquer une fonction (ma fonction) sur chaque caracère et générer la phrase résultante, SANS UTILISATION de tableau de caracères (juste des getchar() successives, je suppose).
Merci

Peux tu indiquer - s’il te plaît - le langage dans le titre? (via le bouton http://www.clubic.com/forum/style_images/persoclubic/editer.gif).

Comme getchar(), c’est du C, j’y répond : tu veux faire quoi au juste? Car sans tableau (ou buffer) tu ne pourras passer que les caractères à ta fonction.

En ce sens :

int c;
while ((c = getchar()) != EOF) {
  foo(c);
}

Maintenant, ça serait plus juste et utile :

char buffer[1025];
int i = 0, c = 0, limit = sizeof(buffer)/sizeof(char)-1;
for ( i = 0; 
       i < limit && ((c = getchar())) != EOF;
      ++i) {
  buffer[i] = c;
}
buffer[i] = '\0';

foo(buffer);

(et dans ce cas, fread ou fgets seraient plus performantes)

[color=green]Bonsoir, Merci pour la réponse rapide et désolé pour le retard, il s’agit bien du langage C, vous l’avez bien deviné :oui:
Donc voilà ce que je veux faire au juste, je cherche à modifier (coder) un texte saisi et l’afficher à nouveau dans sa nouvelle version, là je trouve la difficulté de lire le texte caractère par caractère sans utiliser de tableau. Merci d’avance pour l’aide.[/color]


#include <stdio.h>

char nextcar(char c); /* prototype de ma fonction */
int main()
{
  char c,d;  
  printf("Donner un texte : "); /* ici je me contente de saisir et lire un seul caractère */
  scanf("%c",&c);
  
  d=nextcar(c);
  printf("Resultat : %c",d);
  
 
}
/* Ma fonction */

    char nextcar(char c)      
   {
       
       if((c>='a')&&(c<'z')) /* si c est caractère miniscule , retourner le caractère suivant */
         return c+1;
       else if(c=='z'){ /* si c='z', retourne 'a' */
         c='a'; 
         return c;}
       else              /* autre, laisser telquel */
         return c;                                             
    }

Tu devrais tagger ton sujet, Sans-Nom va s’énerver :whistle:

Est ce que tu trouves que c’est bien taggé maintenant, tu es sûr que sans-nom ne sera plus énervé :grrr: —> :lol:

Bon, je crois que j’ai trouvé…

#include <stdio.h>
char nextcar(char c);
int main()
{
  char c,d;  
  printf("Donner un texte : ");
  c=getchar();
  
  while(c != '#'){
  d=nextcar(c);
  putchar(d);
  c=getchar();
  } 
 
}

Non. Il n’y a toujours pas le langage dans le titre boudiou

Ce qui est important c’est de le dire dans le titre, pas dans le contenu du message! ce que les gens voient en premier, c’est le titre!

J’allais demandé quelle était ta condition d’arrêt, mais ton dernier code semble être bon.