FORUM Tom's Hardware » Programmation » C / C++ / Java » pointeur null en C
 

pointeur null en C

Il y a 400 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici



Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : pointeur null en C
 
Plus d'informations

Bonjour!
Je voudrai creer en C une fonction qui renvoie un pointeur null ou l'addresse d'un caractere (je travaille sur des chaines de caracteres!).
J'ai trouvé des exemples qui utilisaient malloc calloc mais comme c'était avec des entiers j'ai pas trop compris....
Est ce que quelqu'un pourrait m'éclairer sur ce qu'est exactement un pointeur null é surtout comment on l'utilise!
Merci beaucoup!

C is a sharp tool
Plus d'informations

a écrit :

Je voudrai creer en C une fonction qui renvoie un pointeur null ou l'addresse d'un caractere (je travaille sur des chaines de caracteres!).
J'ai trouvé des exemples qui utilisaient malloc calloc mais comme c'était avec des entiers j'ai pas trop compris....
Est ce que quelqu'un pourrait m'éclairer sur ce qu'est exactement un pointeur null


Ceci est un pointeur p initialisé avec la valeur NULL qui signifie 'invalide'.

Code :
  1. char *p = NULL;


Citation :

é surtout comment on l'utilise!


Code :
  1. if (p != NULL)
  2.   {
  3.       do_something_with(p);
  4.   }


En gros, tu mets NULL par défaut et si tu trouves quelque chose tu change la valeur de p. Tu retournes p. Il aura la bonne valeur...

Si tu as des difficulltés, poste ton code.

Message cité 1 fois
Message édité par Emmanuel Delahaye le 24-04-2006 à 18:28:38

---------------
Des infos sur la programmation et le langage C:
http://bien-programmer.blogspot.com/
http://mapage.noos.fr/emdel/

 

Plus d'informations

a écrit :

Ceci est un pointeur p initialisé avec la valeur NULL qui signifie 'invalide'.

Code :
  1. char *p = NULL;


Citation :

é surtout comment on l'utilise!


Code :
  1. if (p != NULL)
  2.   {
  3.       do_something_with(p);
  4.   }


En gros, tu mets NULL par défaut et si tu trouves quelque chose tu change la valeur de p. Tu retournes p. Il aura la bonne valeur...

Si tu as des difficulltés, poste ton code.




Merci j'ai essayé mais ca marche pas!
J'ai comme erreur :
47 C:\Dev-Cpp\EXO4bis.c [Warning] assignment makes integer from pointer without a cast
Ca veut dire quoi?

Merci!

Code :
  1. # include <stdio.h>
  2. # include <string.h>
  3. # include <stdlib.h>
  4. void saisie(char *);
  5. int recherche_bis(char*, char*);
  6. int main()
  7. {
  8. ////////////////////////
  9. ///Deuxieme question///
  10. //////////////////////
  11.     char *ch1;
  12.     char *ch2;
  13.     int j;
  14.     printf ("Entrer une chaine de caracteres ch1\n" );
  15.     saisie(ch1);
  16.     printf ("Entrer la chaine ch2 que vous voulez chercher dans ch1\n" );
  17.     saisie(ch2);
  18.     j = recherche_bis(ch1, ch2);
  19.     printf ("recherche_bis retourne %d", j);
  20.     system("PAUSE" );
  21.     return 0;
  22. }
  23. void saisie(char*chaine)
  24.     {
  25.     char c;
  26.     while ((c = getchar())!= '\n')
  27.           *(chaine++) = c;
  28.     *chaine = '\0';
  29.     }
  30. int recherche_bis(char*ch1, char*ch2)
  31. {
  32.     int *p = NULL;
  33.     while (*ch1 != '\0')
  34.       { 
  35.         while ((*ch1 == *ch2)&&(*ch2 != '\0'))
  36.             {
  37.                 ch1++;
  38.                 ch2++;
  39.             }
  40.           if (*ch2 == '\0')
  41.             {
  42.                   *p = ch1;
  43.                   return *p;
  44.             }
  45.           ch1 = 0;
  46.       }
  47.       return *p;
  48. }

C is a sharp tool
Plus d'informations

a écrit :

Merci j'ai essayé mais ca marche pas!
J'ai comme erreur :
47 C:\Dev-Cpp\EXO4bis.c [Warning] assignment makes integer from pointer without a cast
Ca veut dire quoi?


La valeur (char) est incompatible avec la variable (pointeur sur char)

Citation :

Code :
  1. int recherche_bis(char*ch1, char*ch2)
  2. {
  3.     int *p = NULL;
  4.                   return *p;
  5.       return *p;
  6. }



Pourquoi *p ? J'ai dit

Citation :

Tu retournes p


pas

Citation :

Tu retournes *p

Message cité 1 fois
Message édité par Emmanuel Delahaye le 24-04-2006 à 19:05:44

---------------
Des infos sur la programmation et le langage C:
http://bien-programmer.blogspot.com/
http://mapage.noos.fr/emdel/

 

Plus d'informations

a écrit :

La valeur (char) est incompatible avec la variable (pointeur sur char)

Citation :

Code :
  1. int recherche_bis(char*ch1, char*ch2)
  2. {
  3.     int *p = NULL;
  4.                   return *p;
  5.       return *p;
  6. }



Pourquoi *p ? J'ai dit

Citation :

Tu retournes p


pas

Citation :

Tu retournes *p





Oui mais si je mets return p
ca me met encore plus d'erreur!
Je comprend pas trop les erreurs é comment faut les corriger!
j'ai essayer de modifier et ca donne :
47 C:\Dev-Cpp\EXO4bis.c [Warning] assignment makes integer from pointer without a cast
48 C:\Dev-Cpp\EXO4bis.c [Warning] return makes integer from pointer without a cast
52 C:\Dev-Cpp\EXO4bis.c [Warning] return makes integer from pointer without a cast

avec comme code :

Code :
  1. # include <stdio.h>
  2. # include <string.h>
  3. # include <stdlib.h>
  4. void saisie(char *);
  5. int recherche_bis(char*, char*);
  6. int main()
  7. {
  8. ////////////////////////
  9. ///Deuxieme question///
  10. //////////////////////
  11.     char *ch1;
  12.     char *ch2;
  13.     int j;
  14.     printf ("Entrer une chaine de caracteres ch1\n" );
  15.     saisie(ch1);
  16.     printf ("Entrer la chaine ch2 que vous voulez chercher dans ch1\n" );
  17.     saisie(ch2);
  18.     j = recherche_bis(ch1, ch2);
  19.     printf ("recherche_bis retourne %d", j);
  20.     system("PAUSE" );
  21.     return 0;
  22. }
  23. void saisie(char*chaine)
  24.     {
  25.     char c;
  26.     while ((c = getchar())!= '\n')
  27.           *(chaine++) = c;
  28.     *chaine = '\0';
  29.     }
  30. int recherche_bis(char*ch1, char*ch2)
  31. {
  32.     char *p = NULL;
  33.     while (*ch1 != '\0')
  34.       { 
  35.         while ((*ch1 == *ch2)&&(*ch2 != '\0'))
  36.             {
  37.                 ch1++;
  38.                 ch2++;
  39.             }
  40.           if (*ch2 == '\0')
  41.             {
  42.                   *p = ch1;
  43.                   return p;
  44.             }
  45.           ch1 = 0;
  46.       }
  47.       return p;
  48. }

C is a sharp tool
Plus d'informations

a écrit :

Oui mais si je mets return p
ca me met encore plus d'erreur!
Je comprend pas trop les erreurs é comment faut les corriger!
j'ai essayer de modifier et ca donne :
47 C:\Dev-Cpp\EXO4bis.c [Warning] assignment makes integer from pointer without a cast
48 C:\Dev-Cpp\EXO4bis.c [Warning] return makes integer from pointer without a cast
52 C:\Dev-Cpp\EXO4bis.c [Warning] return makes integer from pointer without a cast

avec comme code :

Code :
  1. int recherche_bis(char*ch1, char*ch2)
  2. {
  3.     char *p = NULL;
  4.       return p;
  5. }



Oui, je ne l'avais pas vu, masi le type retourné par recherche_bis() doit être le même que celui de p...

D'une manière générale, il faut être cohérent...


---------------
Des infos sur la programmation et le langage C:
http://bien-programmer.blogspot.com/
http://mapage.noos.fr/emdel/

 

Plus d'informations

je suis perdue.....
Et c'est vraiment trop enervant quand cela ne veut pas marcher!

Profil : Pointeur
Plus d'informations

et faudrait peut etre allouer de la mémoire pour tes chaines :o


---------------
Da Bidz Triad©®™: Bidz Interceptor
.:: Smileyz version 4.2 [050625]::. -- Code source disponible sous licence GPL.
[u
Plus d'informations

donc là faut ke je fasse avec sizeof mé je le mé avant ou apré ma fonction saisie de chaine ? je me suis jamais servie de ca..... D'habitude je fais avec les tableaux c'est plus simple mé là jé pas le droit alor cé plus dur!
merci de ton aide!

C is a sharp tool
Plus d'informations

a écrit :

donc là faut ke je fasse avec sizeof mé je le mé avant ou apré ma fonction saisie de chaine ? je me suis jamais servie de ca..... D'habitude je fais avec les tableaux c'est plus simple mé là jé pas le droit alor cé plus dur!


C'est pas dur, mais il faut cesser de programmer au hasard et se former. (et soigner son orthographe, parce tu es limite incompréhensible, là. Ici, on parle français...).

Un site et un tuto site de plus en plus populaires, notamment chez les jeunes (-18) :

http://www.siteduzero.com/tuto-3-8 [...] -en-c.html


---------------
Des infos sur la programmation et le langage C:
http://bien-programmer.blogspot.com/
http://mapage.noos.fr/emdel/

 

Plus d'informations

ola ... cela m'a l'air bien compliqué pour un code de comparaison de chaines.

Cela remonte à loin, le C pour moi mais un scanf .. n'aurais pas été plus simple.. surtout pour les allocations ..?


Aller à :
 
  FORUM Tom's Hardware » Programmation » C / C++ / Java » pointeur null en C

Annonces Google
Publicité
Actualités relatives

La souris de Microsoft qui fait télécommande

Publié le 12 January 2007

Présentée fin octobre (cf. Microsoft présente ses accessoires pour PC), la souris Wireless Notebook Presenter Mouse 8000 de Microsoft arrive en vente. Pointeur laser et télécommande Il s’agit d’abord d’une souris ambidextre sans fil à la norme Bluetooth, Lire la suite

Une souris qui présente bien

Publié le 13 September 2007

Lors d’une présentation à des clients, des collaborateurs, etc. on est souvent amené à pointer sur l’écran un élément critique. Dans ces cas-là, le professionnel peu prévoyant se retrouve à essayer de montrer avec son doigt, sans pour autant masquer la mo ... Lire la suite

Nouveaux périphériques sans fil Microsoft

Publié le 14 September 2006

Microsoft vient n’annoncer deux nouveaux claviers, une souris sans fil pour PC portables et une nouvelle webcam. Un clavier sans fil rétro-éclairé Le Wireless Entertainment Desktop 8000 est un modèle haut de gamme, il sera disponible en Février aux Lire la suite

Microsoft se met à la VoIP

Publié le 17 March 2006

Microsoft a aussi décidé de prendre une part du gâteau VoIP en annonçant qu’il proposerait des services de téléphonie depuis ses services Windows Live. Il sera ainsi possible pour un utilisateur de Windows Li Lire la suite

Les derniers tests

Que choisir ? Home Cinema 5.1 ou projecteur de son ?

Publié le 25 September 2008

Faut-il craquer pour un ensemble 5.1 ou pour une barre de son ? Découvrez les forces et faiblesses comparées de chaque système. Lire la suite

Intel Core i7 (Nehalem) : une architecture signée AMD ?

Publié le 25 September 2008

Avec ses nouveaux processeurs Core i7, Intel fait évoluer les Core 2 en reprenant leur architecture, mais en lui rajoutant des technologies dont la plupart semblent avoir leur équivalent direct chez AMD. Impression ou réalité ? Lire la suite

Test du Nokia N96 : la vie sans écran tactile

Publié le 24 September 2008

Un téléphone haut de gamme peut il échapper à l'écran tactile ? Nokia a tenté le pari avec le N96. Lire la suite

Les nouveaux disques durs 1 To

Publié le 22 September 2008

Un an et demi après l'introduction du premier disque dur 1 To, les prix ont beaucoup diminué et de nouveaux modèles ont été lancés. Mais comment se comportent-ils entre eux et par rapport aux anciens ? Réponse dans ce comparatif. Lire la suite