pointeur null en C
Dernière réponse : dans Programmation
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!
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!
Autres pages sur : pointeur null
Lassé par la pub ? Créez un compte
Citation :
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'.
char *p = NULL;
Citation :
é surtout comment on l'utilise!
if (p != NULL)
{
do_something_with(p);
}
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.
la trotte a dit :
Ceci est un pointeur p initialisé avec la valeur NULL qui signifie 'invalide'.
char *p = NULL;
Citation :
é surtout comment on l'utilise!
if (p != NULL)
{
do_something_with(p);
}
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!
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
void saisie(char *);
int recherche_bis(char*, char*);
int main()
{
////////////////////////
///Deuxieme question///
//////////////////////
char *ch1;
char *ch2;
int j;
printf ("Entrer une chaine de caracteres ch1\n");
saisie(ch1);
printf ("Entrer la chaine ch2 que vous voulez chercher dans ch1\n");
saisie(ch2);
j = recherche_bis(ch1, ch2);
printf ("recherche_bis retourne %d", j);
system("PAUSE");
return 0;
}
void saisie(char*chaine)
{
char c;
while ((c = getchar())!= '\n')
*(chaine++) = c;
*chaine = '\0';
}
int recherche_bis(char*ch1, char*ch2)
{
int *p = NULL;
while (*ch1 != '\0')
{
while ((*ch1 == *ch2)&&(*ch2 != '\0'))
{
ch1++;
ch2++;
}
if (*ch2 == '\0')
{
*p = ch1;
return *p;
}
ch1 = 0;
}
return *p;
}
Citation :
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 :
int recherche_bis(char*ch1, char*ch2)
{
int *p = NULL;
return *p;
return *p;
}
Pourquoi *p ? J'ai dit
Citation :
Tu retournes ppas
Citation :
Tu retournes *pla trotte a dit :
La valeur (char) est incompatible avec la variable (pointeur sur char)Citation :
int recherche_bis(char*ch1, char*ch2)
{
int *p = NULL;
return *p;
return *p;
}
Pourquoi *p ? J'ai dit
Citation :
Tu retournes ppas
Citation :
Tu retournes *pOui 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 :
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
void saisie(char *);
int recherche_bis(char*, char*);
int main()
{
////////////////////////
///Deuxieme question///
//////////////////////
char *ch1;
char *ch2;
int j;
printf ("Entrer une chaine de caracteres ch1\n");
saisie(ch1);
printf ("Entrer la chaine ch2 que vous voulez chercher dans ch1\n");
saisie(ch2);
j = recherche_bis(ch1, ch2);
printf ("recherche_bis retourne %d", j);
system("PAUSE");
return 0;
}
void saisie(char*chaine)
{
char c;
while ((c = getchar())!= '\n')
*(chaine++) = c;
*chaine = '\0';
}
int recherche_bis(char*ch1, char*ch2)
{
char *p = NULL;
while (*ch1 != '\0')
{
while ((*ch1 == *ch2)&&(*ch2 != '\0'))
{
ch1++;
ch2++;
}
if (*ch2 == '\0')
{
*p = ch1;
return p;
}
ch1 = 0;
}
return p;
}
Citation :
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 :
int recherche_bis(char*ch1, char*ch2)
{
char *p = NULL;
return p;
}
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...
Citation :
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-0-apprenez-a-program...
Lassé par la pub ? Créez un compte