Chaine de caractère [Résolu]

Signaler
Messages postés
14
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
20 janvier 2006
-
Messages postés
14
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
20 janvier 2006
-
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

Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

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...
Messages postés
34
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
14 avril 2007

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
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

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...
Messages postés
14
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
20 janvier 2006

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
Messages postés
14
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
20 janvier 2006

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