Chaine de caractère

Résolu
Thanatoster Messages postés 14 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 20 janvier 2006 - 29 nov. 2005 à 21:41
Thanatoster Messages postés 14 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 20 janvier 2006 - 30 nov. 2005 à 16:29
Bonjour a tous, mon problème est le suivant, pour les cours je dois faire un programme d'apres l'énoncé suivant
"saisir au clavier des éléments chaine de caractere dont le nombre
est connu avant saisie et variable

Utiliser des indices et non les pointeurs"



j'ai donc essayé ceci:

#include <stdafx.h>

#include <stdio.h>

#include<conio.h>



void main()

{

int i,j;

char tab[3][5]; //3 et 5 étant des valeurs temporaires afin de tester si ca marche

for (i=0;i<3;i++)

{

printf("Veuillez entrer la chaine %d : ",i+1);

for (j=0;j<5;j++)

{

fflush (stdin);

tab[i][j]=getch();

printf("%c",tab[i][j]);

}

printf("\n");

}

}



Le problème est que si je ne tape pas un chaine de 5 caractère, je ne peux pas passer à l'élément suivant



Voila j'espere que j'ai été clair et que vous pourrez m'aider...

Thanatoster

5 réponses

cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
30 nov. 2005 à 07:27
Bonjour,



un autre indice :

pour recuperer un caractere tu fais un c = getchar() et c'est c que tu testes et non chaine[i][j]

Matt...
3
miximog Messages postés 34 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 14 avril 2007
29 nov. 2005 à 22:20
Selon moi et d'après l'énoncé on te demande de saisir au clavier des éléments chaine de caractere.Partant de la ton getch() n'a rien a faire la puisque le getch te permettera selement de récupérer un "caractère" et non une chaine de caractère. Donc toujours selon moi il faudrai uttiliser un gets(tab), puis pour connaitre le nombre avant la saisi je voi qu'une chose c'est de demander à l'utilisateur combien de chaine de caractère il veut rentrer .

Voila
0
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
29 nov. 2005 à 22:44
Bonsoir



vu que c'est pour un cours, juste des indices :



int c, j, i;

char chaines[5][128];



c etant le caractère que tu lis avec getchar;

i etant le nombre de chaine traitées;

j etant le nombre de caractere dans ta chaine;

chaines etant ici que tu stockes 5 chaines de 127 caracteres (+ '\0' final)



tant que le nombre de chaine n'est pas atteint

saisie d'un caractere

tant que ce n'est pas un retour chariot ou que le nombre de caractere n'est pas atteint

saisie d'un caractere



Matt...
0
Thanatoster Messages postés 14 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 20 janvier 2006
29 nov. 2005 à 23:56
J'aime bien la réponse de Matt67 seulement comment écrire la condition de la deuxième boucle, j'ai tenté de faire : while (j<127 || tab[i][j-1] != '\n')

mais ca ne fonctionne pas



merci de vos réponse en tous cas

Thanatoster
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Thanatoster Messages postés 14 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 20 janvier 2006
30 nov. 2005 à 16:29
Merci beaucoup pour vos réponse, voila ce que j'ai fait et apparement
tout marche bien. J'ai aussi rajouter une demand du nombre de
chaine a mettre.



#include <stdafx.h>

#include <stdio.h>



void main()

{

int i,j,ch,nbval;

char tab[150][150];



do

{

printf("Combien de valeurs voulez vous entrer?");

scanf("%d", &nbval);

if(nbval<0 || nbval>150)

{

printf("Valeur
interdite, veuillez entrer une valeur entre 1 et 150\n");

}

}while(nbval<0 || nbval>150);

fflush(stdin);

for (i=0;i<nbval;i++)

{

printf("Veuillez entrer la chaine %d : ",i+1);

for (j=0; (j < 149) && ((ch = getchar()) != EOF)& (ch != '\n'); j++ )

{

tab[i][j]=char(ch);



}

tab[i][j]='\0';

//printf("%s\n",tab[i]);

}

}

Thanatoster
0