Bonjour, je me présente : je suis étudiant dans une fac d'informatique mon prof nous a donné un projet a propos d'expressions post fixés au moyen de chaines de chaines de caractères et de listes chaînées . Je vous passerais les détails sur les listes.
voici donc mon code : il se compose de trois fichiers dont "char.h" qui contient les prototypes de "char.c" que voici :
/****************** char.c **********************/
#include<stdio.h>
#include<stdlib.h>
/* alloue la memoire pour une chaine de caractère */
char *allocMemChar(int nb){
char *ch;
ch = malloc(nb*sizeof(*ch));//on alloue la mémoire de manière dynamique
if(ch == NULL){
printf("\nIl n'y a pas assez de memoire" );
exit(0);
}
printf("\n la memoire est allouee !" );
return ch; //renvoie un pointeur
}
/* Pour lire une chaine de caractères*/
char *saisieChar(char *ch){
printf("\nSaisissez votre chaine, puis apppuyez sur Entree : " );
fgets(ch,sizeof(ch),stdin);//la fameuse fonction fgets()
return ch;//renvoie aussi un pointeur
}
/* Pour afficher une chaine de caractères */
void afficheChar(char *ch){
printf("\nVous avez saisis : %s",ch);
}
/*****************************************************/
voici donc maintenant le fichier contenant le programme principal :
/********************** testChar.c **********************/
#include "char.h"
/* Fonction principale */
int main(void){
int nb = 81;//nombtre de caractères de la chaine
char *ch;//nouvelle chaine pointée
ch = allocMemChar(nb);//on alloue la memoire évidement
ch = saisieChar(ch);//on initialise par saisie à l'entrée standard
afficheChar(ch);//et on affiche
while(1);//boucle infinie pour l'execution sous l'invite de commande de windows
}
/***************************************************/
Prenons un exemple : voici le résultat a l’exécution:
la memoire est allouee !
saisissez votre chaine, puis appuyez sur Entree : coucou
vous avez saisis : cou
Le voila mon problème : la fonction fgets() ne restitue pas tout la chaine a mois que le probleme vienne de stdin??
Je vous remercie d'une réponse rapide
Message édité par Mrcharlonien le 06-11-2012 à 16:02:05