le '\0' (zero, et non O
![;)](https://www.developpez.net/forums/images/smilies/icon_wink.gif)
) est utilisé pour représenter la fin d'une chaine de caractères C style...
Si tu demande l'affichage d'une telle chaine déclarée sous la forme de
1 2
| char str[]="une chaine\0 coupee apres le deuxieme mot";
ptrintf("%s",str); |
tu n'aura que l'affichage de "une chaine"
![;)](https://www.developpez.net/forums/images/smilies/icon_wink.gif)
(et si tu utilises les fonctions C propres aux chaines de caractères (strlen, strcmp, strcat, ...), "coupee apres le deuxieme mot" ne sera
jamais pris en compte
![;)](https://www.developpez.net/forums/images/smilies/icon_wink.gif)
[EDIT]c'est d'ailleurs le moyen le plus simple de vider une chaine de caractères C style: placer un '\0' au premier caractère ( str[0] )
[EDIT 2] Le plus marrant de l'histoire, c'est que, le C++ se basant sur le standard C, on remarque assez facilement que la création d'une std::string utilisera également le '\0' comme délimiteur:
1 2 3 4 5 6 7 8 9 10
| #include <iostream>
#include <string>
using namespace std;
int main()
{
std::string str("une chaine\0 coupee apres le deuxieme mot");
cout<<str.size()<<" "<<str<<endl
<<str[13];//devrait afficher 'o'
return 0;
} |
affiche n'importe quoi, mais pas 'o'
![;)](https://www.developpez.net/forums/images/smilies/icon_wink.gif)
Partager