Tableau de caractère

Résolu
sakjimh Messages postés 13 Date d'inscription jeudi 9 mars 2006 Statut Membre Dernière intervention 31 décembre 2007 - 20 oct. 2006 à 22:56
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 21 oct. 2006 à 18:39
salut à tous
voila j'ai un petit problème: je veux crée un tableau de caractère avec une boucle for et l'afficher caractère par caractère:
#include <conio.h>
#include <stdio.h>
#define L 255
void saisie(char x[L])
{
  int i;
    for(i=0;x[i]!='\0';i++)
    scanf("%c",&x[i]);
    x[i]='\0';
}
void affiche(char x[L])
{
  int i;
  for(i=0;x[i]!='\0';i++)
    printf("%c\n",x[i]);
}
void main()
{
  //clrscr();
  char ch[L];
  saisie(ch);
  affiche(ch);
  getch();
}
ou est la faute?!
merci d'avance

9 réponses

titi035 Messages postés 173 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 10 mai 2010
20 oct. 2006 à 23:41
ton scanf dans la boucle saisie chope 2 char à la fois et la condition de sortie de ta boucle n'est pas bonne.


essaie ça

void saisie(char x[L])

{

  int i;

    for(i=0;x[i-1]!='\n';i++)

    {

        scanf("%c",&x[i]);

        flushall();

    }


    x[i]='\0';

}


si tu tapes enter, tu sors de la boucle.

.
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
20 oct. 2006 à 23:29
Salut :

La faute est claire et évidente :

la condition dans la boucle est mal fausse
 
for(i=0; ch[i] != '\0'; i++)

Dans l'appel tu fais :

char ch [L];
saisie (ch);

Initialement le contenu de ch est aléatoire. Est tu sur que tu vas rencontrer un '\0'

une proposition :

void saisie (char * str, int l) {
    for (int i=0; i<l; ++i) {
       printf ("char : ");scanf ("%c", str+i);
    }
    str [i] = '\0';
}

void afficher (char * str) {
    printf ("%s", str);
}

// main

char txt [L];

saisie (L, 20);
afficher (L);
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
20 oct. 2006 à 23:48
Salut :

ajoutes donc un fflush (stdin)

ou tout simplement

void saisie (char * str)
{
    gets (str);
}
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
21 oct. 2006 à 00:47
salut :

void saisie (char * str, int l) {
    for (int i=0; i<l; ++i) {
       printf ("char : ");
       scanf ("%c", str+i);
       fflush (stdin);
    }
    str [i] = '\0';
}
0

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

Posez votre question
titi035 Messages postés 173 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 10 mai 2010
21 oct. 2006 à 07:08
C'est une cas d'école quoi...
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
21 oct. 2006 à 08:28
Salut :

Mais ça revient au même. Pourquoi compliquer les choses tant qu'il y a des solutions plus simples à moins que tu cherches autre chose à faire que je ne peux pas dissimuler à travers ce petit bout de code?

Que veux tu faire précisement?
0
titi035 Messages postés 173 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 10 mai 2010
21 oct. 2006 à 14:56
heu...

ce n'est pas moi qui ait posé la question à la base. Moi j'ai proposé une solution... regarde + haut...
0
sakjimh Messages postés 13 Date d'inscription jeudi 9 mars 2006 Statut Membre Dernière intervention 31 décembre 2007
21 oct. 2006 à 18:08
ah oui oui je vois j'ai confondu le \n avec le \0 de la fin de la chaine merci titi035 merci aussi ombitious developper mais je cherche une solution sans les *pointeur
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
21 oct. 2006 à 18:39
Salut :

Il faut que tu prend l'habitude d'utiliser les char *
C'est le coeur du C.

Score :

[auteurdetail.aspx?ID=667082 Titi035]
1 - 0 [auteurdetail.aspx?ID=237842 Ombitious_Developper]
0
Rejoignez-nous