[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!
A voir également:

7 réponses

mamiemando Messages postés 34250 Date d'inscription   Statut Modérateur Dernière intervention   7 900
 
\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
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
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
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

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

Posez votre question
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
mamiemando Messages postés 34250 Date d'inscription   Statut Modérateur Dernière intervention   7 900
 
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
cataclypse
 
Ben chez moi, en copiant/collant ton code, ça fonctionne.
Et je suis sous windows avec MinGW.
0