Probleme dans le compilateur c [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 2 mai 2006
Statut
Membre
Dernière intervention
10 janvier 2007
-
Messages postés
5
Date d'inscription
mardi 2 mai 2006
Statut
Membre
Dernière intervention
10 janvier 2007
-
salut, j'ai un petit probleme, quand j'ecris une chaine de caractere en c et je le demande de m'affiche il m'affiche des symbole comme le code ascii. je sais pas ou le probleme.
NB: le programme ne contient aucun error.j'ai essaie avec des programme simple et ma donne la meme chose.
 svp donne moi la solution

5 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Ton programme a BEAUCOUP de problèmes. En voici une version corrigé rapidement mais fonctionnelle:

#include <stdio.h>
#include <stdlib.h>

typedef struct cc
{
    char nom[200], pre[200];
    int age;
    struct cc *next;
}per;
per *last 0, *first 0;

void entre (void)
{
    while(1)
    {
        char c;
        per *liste;

        fflush(stdin);

        printf("voulez vous entrer un patient (o/n)? "); scanf("%c", &c);
        if(c != 'o') break;

        liste = (per*)malloc(sizeof(per));

        fflush(stdin);
        printf("entre le nom: "); gets(liste->nom);
        printf("entre le prenom: "); gets(liste->pre);
        printf("entre l'age: ");  scanf("%d", &liste->age);
        liste->next = 0;        if(last !0) last->next liste;
        last = liste;
        if(first 0) first liste;
    }
}

void affiche (void)
{
    int i = 1;
    per *c = first;

    if(c == 0)
        return;

    while(c != NULL)
    {
        per *tmp;
        printf("la %d personne est %s %s, %d ans\n", i, c->nom, c->pre, c->age);
        i++;
        tmp = c->next; free(c);
        c = tmp;
    }
}

void main (void)
{
    entre();
    affiche();
    system("pause");
}

Je crois que tu devrais réviser quelque notion du C.

Bonne continuation.

C++ (@++)<!--
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Avec si peu de détail, difficile à dire.

Il est possible que ton programme soit en UNICODE mais que la chaine soit ASCII (ou l'inverse).
Tu as peut-être oublier d'ajouter le 0 final à la fin de ta chaine.

Sans un morceau de code (le bout de code fautif), on ne peut pas vraiment t'aider.

C++ (@++)<!--
Messages postés
5
Date d'inscription
mardi 2 mai 2006
Statut
Membre
Dernière intervention
10 janvier 2007

voici le code.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct cc {
        char nom[200];
        char pre[200];
        int age;
  struct cc *s;
  }per;
void entre(per **liste)
{   char c;
per *el;
*liste=NULL;
while(printf("voulez vous enrter un patient o/n"),fflush(stdin), scanf("%c",&c), (c=='o'))
{
el=(per*)malloc(sizeof(per));
printf("entre le nom"); fflush(stdin);
scanf("%c",&el->nom);
printf("entre le prenom");            fflush(stdin);
gets(el->pre);
printf("entre l'age");
scanf("%d",&el->nom);
el->s=*liste;
*liste=el;
}                    }


void affiche( per *liste)
{ int i;
while(liste!=NULL)
{
printf("les %d personne est",i);
printf("%s",liste->nom);
i++;
liste=liste->s;
}}
void main()
{
per *liste;
entre(&liste);
affiche(liste);
getch();
}


 
Messages postés
212
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
28 mai 2011
2
scanf("%c",&el->nom);
....
scanf("%d",&el->nom);
1) a la place de scanner l'age tu scan le nom
2)tu t'es pas trempé ici? le nom est une chaine de caracters donc soit tu fais un gets comme pour le prenom soit tu utilise scanf mais avec %s et non %c

<hr size="2" width="100%" />Trafic web gratuit!!!
Messages postés
5
Date d'inscription
mardi 2 mai 2006
Statut
Membre
Dernière intervention
10 janvier 2007

salut, merci SAKingdom votre programme marche bien, mais notre prof de cours nous a donne la methode qui j'ai deja fais, oui il y a des erreur de frappe comme (%c,%s,%d).en tout cas merci