[C] caractères bizzards..

Maxg59 Messages postés 275 Date d'inscription   Statut Membre Dernière intervention   -  
Maxg59 Messages postés 275 Date d'inscription   Statut Membre Dernière intervention   -
salut a tous ! ;)
Depuis que j'ai commencé a faire des prog avec des chaines de caractéres en C, j'ai souvent eu le meme probléme :
a la fin, ma chaine de caractére s'affichai mais avec des signes bizzard à la fin( genre des fléches, smiley, coeurs etc ...(sous dos mdr :) )
Donc j'ai quelque questions :
que sont ces signes, à quoi servent ils ?
et surtout pourquoi sont-ils là? et comment les faire disparaitre ??
voici un exemple de prog qui fait sa :
(je sais que l'on peu le faire plus facilement, mais l'exercice le posai comme ça :) )
#include <stdio.h>

#define MAXCAR 1000

#define AVANTOUI 1
#define AVANTNON 0

void verif(char texte[], char sortie[]);

int main(void)
{
    char texte[MAXCAR]; /* texte entré */
    char sortie[MAXCAR+1];/* texte a afficher en sortie */
    int c,i;/*caractére d'entré courant, cle*/
    
    for(i=0;(c=getchar()) != EOF && i < (MAXCAR-1);++i)
                        texte[i]=c;
    verif(texte,sortie);
    printf("\n%s", sortie);
    getchar();
    return 0;
}
void verif(char entre[], char sortie[])
{
     int i,j;/* clés*/
     int etat=AVANTNON; /*defini l'état du caractére d'avant( \n ou pas )*/
     j=i=0;
     while(entre[i] != '\0')
     {
                    /* suppretion des lignes vide */
                    if(entre[i]=='\n' && etat==AVANTNON)
                    {
                                      etat=AVANTOUI;
                                      sortie[j]=entre[i];
                                      ++j;++i;
                    }
                    else if(entre[i]=='\n' && etat==AVANTOUI)
                    {
                         ++i;
                    }
                    else
                    {
                        sortie[j]=entre[i];
                        etat=AVANTNON;
                        ++i;++j;
                    }
     }
     sortie[j]='\0';
                                                          

 }

D'avance merci de votre aide :D
A voir également:

1 réponse

hamzafes Messages postés 243 Date d'inscription   Statut Membre Dernière intervention   54
 
Salam,

Ces caractères apparaissent parfois quand la chaîne de caractères affichée ou traitée ne se termine pas avec ‘\0’.
Je vois que vous affectez ‘\0’ au dernier caractère du tableau sortie[], mais je trouve rien dans votre code qui peut faire la même chose pour texte[]


Allah mo3ine
0
Maxg59 Messages postés 275 Date d'inscription   Statut Membre Dernière intervention   27
 
ah, que je suis ***
je epnsais que ce n'étais pas utile....
mais a partir du moment ou j'écrit while(texte[i] != '\0') ça l'est :D
MERCI !!!!!
0