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

Fermé
mélanie - 16 nov. 2005 à 16:53
 cataclypse - 17 nov. 2005 à 10:01
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 33410 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 2 décembre 2024 7 808
16 nov. 2005 à 17:46
\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 434 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 15 décembre 2008 387
16 nov. 2005 à 18:28
Essaye de mettre :
msg[2]=0;
sa revient au meme que '\0' (bien qu'il faille mieux mettre '\0')
0
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
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 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 11 décembre 2005 67
16 nov. 2005 à 19:52
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 33410 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 2 décembre 2024 7 808
17 nov. 2005 à 01:00
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
Ben chez moi, en copiant/collant ton code, ça fonctionne.
Et je suis sous windows avec MinGW.
0