[C/ char] Ajouter un '\O' sans effet?

mélanie -  
 cataclypse -
Bonjour,
je pensais qu'on ajoutant n'importe ou dans une chaine un `\0', lors de l'affichage il s'arreterai au 1er '\0'.
Car j'ai lu " En C, les chaînes de caractères n'existent pas, il s'agit de tableaux de caractères terminés par un caractère nul (\0)".

or

voici mon exemple:

#include <stdio.h>

int main(int argc, char *argv[])
{


char msg[20]="je suis la";

msg[2]='\0';


printf("%s",msg);


getchar();getchar();
return 0;
}   



la je mattendais a voir s'afficher:
"je"

vu que juste apres il ya inséré \0
et non:
"je0suis la"

merci d'avance!

7 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    \0 (avec un zéro) c'est le caractère de fin de chaine.
    Il est donc normal qu'il s'arrête à "Je".

    Il faut que tu mettes :
    msg[2]='0'

    Si tu veux écrire "Je\0uis là" :
    msg[2]='\\'
    msg[3]='0'

    Bonne chance
    0
  2. GallyNet Messages postés 437 Statut Membre 387
     
    Essaye de mettre :
    msg[2]=0;
    sa revient au meme que '\0' (bien qu'il faille mieux mettre '\0')
    0
  3. melanie
     
    tu ne mas pas compris
    mamiemando

    il naffiche pas je
    mais je0suis la

    je sais à quoi sert le \0 cest pourquoi je lai utilisé ici.
    le \0 est quivalent a 0.
    cela pose tjrs probleme.
    0
  4. melanie
     
    peut etre n'ai je pas été clair excusez moi.

    Si j'a fait
    msg[2]='\0' c'est volontairement dans le but que ne s'affiche que la chaine
    "je"
    et non pas
    "je0suis la".
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. limite Messages postés 1207 Statut Membre 67
     
    Salut

    Sous linux, ton programme affiche bien je

    Est-ce le seul bout de code utilisé ou as-tu concaténé plusieurs morceaux en affilée?
    0
  7. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Ah lol parce que sous windows ça marche pas le \0 ? Excuse moi c'est pour ça que je n'avais pas compris mélanie. Ca me semble bizarre ça voudrait dire que le caratère de fin de chaîne serait autre ???

    Tu es bien sûre d'avoir mis un \0 (backslash zero) ? Juste pour être surs tu peux tester ce code ?
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
        char buf[255]="plop plop";
        buf[4]='\0';
        printf("%s\n",buf);
        return 0;
    }
    

    Bonne chance
    0
  8. cataclypse
     
    Ben chez moi, en copiant/collant ton code, ça fonctionne.
    Et je suis sous windows avec MinGW.
    0