Langage C question debutant

Résolu
Bonjour ca signifie quoi lorsqu'on fait
*ptr=0x00;
Est ce qu'onp eut le remplacer par
*ptr='/0';
merci ?
--
C* -----> Either exist as you are or be as you look <---- C*
Configuration: Linux
Firefox 1.0.7

19 réponses

  1. Salut

    char chaine;
    int i;
    int j;
    
    scanf("%s",chaine);
    printf(strlen(chaine));
    
    for (j=1 ; j<9;j++) {
      for (i=1;i<=j;i++)
         printf("*");
      printf("\n");
    }
    


    0
    1. slut .j ai problemme avec cet exercice
      ecris le programme qui lis un nombre puis affiche le nombre de chifre :
      198 il contient 3 chiffres

      ******
      ecris le programme qui affiche
      *
      **
      ***
      ****
      *****
      ******
      *******
      ********

      aide mois SVP
      NB les programme doit etr en c
      0
      1. Bonjour,

        0 == '\0 C'est le caractère NULL'
        ptr = 0;

        Et il faut afficher
        printf("%x\n",ptr);
        0
        1. coucou, Je vais juste savoir comment on peut ecrire un algorithme pour exprimer un nombre comme 123 ou 3421, en combinant structures et tableaux?
          0
          1. Bonjour,
            esqu'on peut passer d'un schéma Pspice à un code en langage C?

            Merci.
            0
            1. Tu veux transformer un schéma éléctronique en langage C? je suis pas sur de te suivre là..
              Tu peux détailler un peu ce que tu veux réellement faire stp?
              0
          2. Merci c'est clair et net c'est un peur normal c'est sur internet :)
            une petite blague pour reveiller tou le ptit monde :) ca ne fait pas de mal
            0
            1. Contributeur
              Ha ! ça !
              En fait, c'est une écriture condensé.
              Soit A,B,C trois expressions.
              A?B:C
              est équivalent à :
              if(A) return B; else return C;
              Voilà, j'espère que ça répond à ta question.
              0
              1. le truc que je comprenais pas c'etais ca : (a<b?b:a)
                0
                1. Contributeur
                  tu défini une macro fonction.*
                  dans ton code après tu peux écrire :
                  MAX(3,1) et ça retourne 3.*Si c'est bien ça ta question
                  0
                  1. il me met error syntaze before int,

                    une autre question subsidiere qui me tracasse la tete
                    #define MAX(a,b) (a<b?b:a)
                    #define FSET(a,b,c) (FD_ISSET(a,c)?a:b)
                    #define NFSET(a,b,c) (FD_ISSET(a,c)?b:a)

                    le define je comprend mai on afecte FSET(a,b,c) a quoi exactement je nai pas compris avec les parentheses :(

                    merci
                    0
                    1. me souvein plus bien, il faut que je revoi mon C:

                      Le truc en plus si je fais
                      un prtinf ("%s",ptr);
                      il ne m'affiche rien de chez rien :(
                      --

                      ptr c'est un pointeur. me demande s'il faut pas déferencer le pointeur (comme j'ai dit me souviens plus bien alors une confirmation ca serait bien)

                      maintenant oui 0x00 c'est 0 en héxa et 0 en hexa c'est 0 en décimal et en binaire donc c'est pas "\O"
                      essaye un printf("%x",\O);

                      pas testé mais de toute facon le comme j'ai dit, un 0 reste un 0 meme un 0x00 :) donc le caractere nul, je ne pense pas que ce soit le meme.

                      EDIT /// ok j'ai rien dit :) je viens d'apprendre un truc :D
                      0
                      1. Oki j'ai dû me gourer alors j'avais fait des tests là-dessus et j'avais eu un truc avec des passages auto par adresse si on utilisait 0x

                        C'était ptet en passant 0x dans une variable j'vérifierais

                        Sinon le caractère \0 vaut bien 0, ou NULL
                        0
                        1. Contributeur
                          pour moi 0x00 c'est 0 en hexadecimal.
                          je ne voi pas pourquoi lorsque tu fait *ptr=0x00 tu modifierait l'adresse du pointeur.
                          Si je veux annulé un poiinteur je fait : ptr=0 (ou 0x00) sans l'étoile.
                          essai ça alors :
                          printf("essai : %d",int('\0'));
                          en fait un caractère correspond à une valeur d'entier. Le tout est de savoir si '\0'==0.
                          D'ailleur tu peux tenté ça comme code :
                          if ('\0'==0)
                              printf("equivalence entre \\0 et 0");
                          else
                             printf("pas d'equivalence\n"); 
                          ta syntax erreur, il la met où?
                          0
                          1. Heu je crois que si tu mets *ptr=0x00, ca te met le pointeur à l'adresse 0 ca ne travaille pas sur la valeur..

                            *ptr='\0' te met le caractère de fin de chaine à l'adresse pointée
                            0
                            1. Alors pas de reponse

                              Je veux juste savoir si
                              *ptr=0x00 <=> *ptr='\0'
                              ou <=>ptr=""
                              en faite si je fais un printf("%s",ptr) il ne m'affiche rien est ce que je peux conclure qu'il lui assigne le caractere null ?
                              merci
                              0
                              1. Le truc en plus si je fais
                                un prtinf ("%s",ptr);
                                il ne m'affiche rien de chez rien :(
                                0
                                1. Je suis desole mais il marche pas ton truc il met syntaxe error :(
                                  0
                                  1. Contributeur
                                    Bonjour.
                                    *ptr=0x00;
                                    assigne la valeur 0 à "*ptr"
                                    *ptr='\0' assigne le caractère nul.
                                    je ne sais pas si c'est la même chose.
                                    Pour vérifier, fait une sortie de '\0' avec printf en lui demandant de sortir un entier :
                                    printf("%d",int('\0'));
                                    0