Variable type char en langage C

Résolu
zebulon2503 Messages postés 1229 Date d'inscription   Statut Membre Dernière intervention   -  
zebulon2503 Messages postés 1229 Date d'inscription   Statut Membre Dernière intervention   -
Salut à toutes et tous !

Petite question rapide et simple normalement.
J'ai un petit trou de mémoire et plus moyen de me rappeler si les variables de types char en langage C sont limitées en taille (255 caractères ou plus ?).

Quelqu'un pourrait il m'éclairer svp ?
Merci :-)

Zebulon

5 réponses

  1. Geo373 Messages postés 588 Date d'inscription   Statut Membre Dernière intervention   96
     
    Un char normal va de -128 à 127 alors qu'un unsigned char va de 0 à 255
    3
  2. mongo1994 Messages postés 1005 Statut Membre 93
     
    0
    1. mongo1994 Messages postés 1005 Statut Membre 93
       
      Retenez bien :

      Le type char permet de stocker des nombres allant de -128 à 127, unsigned char des nombres de 0 à 255.
      Il y a une table que votre ordinateur utilise pour convertir les lettres en nombres et inversement.
      On peut donc utiliser le type char pour stocker UNE lettre.
      'A' est remplacé à la compilation par la valeur correspondante (65 en l'occurrence). On utilise donc les apostrophes pour obtenir la valeur d'une lettre.
      0
    2. jisisv Messages postés 3678 Statut Modérateur 936
       
      Attention cependant avec les chaînes Unicode, qui ne sont pas supportées nativement:
      #include <stdlib.h> 
      #include <stdio.h> 
      #include <string.h> 
      
      int main(coid) 
      { 
        char *format = "Length of '%s' %d\n"; 
        char *st1 = "abc"; 
        char *st2 = "éçà"; 
      
        printf(format, st1, strlen(st1)); 
        printf(format, st2, strlen(st2)); 
      
        exit(EXIT_SUCCESS); 
      } 
      johand@osiris: ~/src/CCM/C $ ./chartest  
      Length of 'abc' 3
      Length of 'éçà' 6
      0
  3. zebulon2503 Messages postés 1229 Date d'inscription   Statut Membre Dernière intervention   110
     
    Merci à vous 2.
    Mais dans le cas où je veux par exemple stocker 4000 caractères, quelle type de variable dois je utiliser ?

    (Je vous promet, dernière question sur le sujet :-) )
    Merci encore !
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      hello
      uin tableau de char
      char tableau[3999] ;
      0
  4. mongo1994 Messages postés 1005 Statut Membre 93
     
    salut
    on poste pour avoir des réponses, et on te répondrais pas si ca nous embetais donc y a aucun soucis.
    mais je ne suis pas très loin en programmation mais, si tu met un Void ca peux pas passer? et puis tu écris char et tu inclus dedan la variable nomée void comme ca, ca devrais ptetre passer?

    enfin, je suis pas très callé en programation mais , il me semble que ca peut se tenter.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Geo373 Messages postés 588 Date d'inscription   Statut Membre Dernière intervention   96
     
    Un short (2 octets) te permet déjà d'aller jusqu'à 65536 mais vu les ordinateurs de maintenant, utilises un int (4 octets) ou long (4 milliards et quelques). C'est pas la place qui manque.
    Quand tu parles de caractère, tu veux dire un nombre ou une phrase de 4000 lettres?
    0
    1. zebulon2503 Messages postés 1229 Date d'inscription   Statut Membre Dernière intervention   110
       
      Je veux savoir si ca est possible :
      char variableA[4000+1];


      Ca serait pour stocker des mots voire de longues phrases.
      0
    2. Geo373 Messages postés 588 Date d'inscription   Statut Membre Dernière intervention   96
       
      Ah oui ça c'est possible, tu peux mettre le nombre que tu veux entre crochet tant que ça rentre dans la plage mémoire e ton PC. Du moment que ton nombre est plus grand que la longueur du texte à rentrer, il n'y aura pas de soucis
      0
    3. zebulon2503 Messages postés 1229 Date d'inscription   Statut Membre Dernière intervention   110
       
      Ok merci :-)
      0