Bonjour,
Je bloque sur quelque chose de très simple : la lecture d'une caractère par une fonction.
Contexte : la fonction de lecture d'un caractère me permet de lire le caractère qui doit être remplacé dans une chaîne, elle-même saisie
dans la fonction lire_chaîne.
A l'intèrieur de la fonction lire_car, j'affiche le caractère correctement, mais dans le programme prinicipal, l'affichage du caractère me donne : caractère + chaîne saisie dans lire_chaîne (exemple : ch="allo", caractère saisi : 'o'. Résultat : oallo). Qu'est-cd qui se passe ?
Merci pour votre secours.
Peut-être qu'il existe des fonctions plus simples à écrire pour lire un caractère dans une fonction et utiliser le caractère lu dans d'autres fonctions?
PROGRAMME
#include <stdio.h>
/************ LECTURE D UNE CHAINE SIMPLE ****************/
/*************************************************/
void lire_chaine(char *tab)
{
printf("Chaine :");
gets(tab);
}
void affiche_chaine(char *tab)
{
printf("\n");
printf("Affichage avec puts : ");puts(tab);
printf("\n");
printf("Affichage avec while (*tab) putchar(*(tab++) : ");
while (*tab) putchar(*(tab++));
printf("\n");
}
void lire_car(char *ar)
{
printf("Car à remplacer : ");ar[0]=getchar(); /* dans un premier essai , j'avais mis char c; c=getchar(); ar=&c; */
printf("\n");
printf("Caractère saisi : ");putchar(*ar);printf("\n"); /* vérification à l'intérieur de la fonction ok */
}
/******************* PROGRAMME PRINICIPAL ***************************/
int main(void)
{
/********** déclarations ************************/
void lire_chaine(char *tab);
void affiche_chaine(char *tab);
void lire_car(char *ar);
char ch[10];
char ka_ar[1]; /* dans un premier essai, j'avais mis : char ka_ar; */
char ka_dr;
void lire_car(char *ar);
char ka_ar[1];
/************ corps du prog principal *****************/
lire_chaine(ch);
affiche_chaine(ch);
printf("\n\n");
lire_car(ka_ar); /* dans un premier essai , j'avais mis lire_car(&ka_ar);
printf("\n");printf("Karactère lu : ");puts(ka_ar);
printf("Voici le caractère lu : "); puts(kar_ar);
}
DONINA