A propos d'un string dans un tableau de char

sophie34 -  
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
lors du cours, l'enseignant nous a dit qu'un tableau de char qui représente un string se finit obligatoirement par un '/0', j'ai voulu m'en assurer avec ce code qui doit afficher les 6 premières cases du tableau, soit A R B R E 0
mais il ne m'affiche que A R B R E et pas de '/0'. Savez-vous pourquoi?

using namespace std;
#include <iostream>
int main(){
char mes[]="arbre";
cout<<mes[0];
cout<<mes[1];
cout<<mes[2];
cout<<mes[3];
cout<<mes[4];
cout<<mes[5];
}


merci :)

4 réponses

fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Car '\0' n'affiche rien. C'est juste le caractère nul dont son code ascii est 0.
Affiche le code ascii des caractères plutôt que leurs caractères et tu verras bien que mes[5] vaut 0.

Cdlt
0
sophie34
 
merci pour ta réponse fiddy :)
mais dis moi, quelle est la fonction en C qui affiche l'équivalent en ASCI des char?
0
loupius Messages postés 789 Statut Membre 148
 
Il n'y a pas de fonction particulière. Il suffit d'imaginer un programme du genre:
#include <iostream>
using namespace std;

int main()
{
  char mes[] = "branche";
  cout << hex << showbase;
  for (unsigned int i=0; i< sizeof(mes); i++)
    cout << (int)mes[i] << endl;
  return (0);
}

Bonne continuation.
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Attention, ton code c'est du C++ et non du C ;-))).
Pour afficher le code ascii, un simple cast suffira.
cout << (int)mes[5];
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Voici le code qui te permet d'afficher tous les caractères ascii :
#include <iostream>
using namespace std;

int main() {
  char mes[] = "arbre";
  for (size_t i=0; i<sizeof mes; i++)
    cout << (int)mes[i] << endl;
}
0