Comment passer aucun caractere dans un fonction dont la parametre est un char

Bonjour à tous,

J'ai un doute concernant le passage d'une valeur à une fonction. Pour etre plus claire voici le code

bool sendCellId(char * celltower0)
{
  return sendCellId(celltower0, NULL, NULL, false);
}
bool sendCellId(char * celltower0, char * lat, char * lon)
{
  return sendCellId(celltower0, lat, lon, true);
}

bool sendCellId(char * celltower0, char * lat, char * lon, bool addOrGet)
{
}

si je fais ceci

sendCellID("228,03,1771,2d6f,45,05");

Je ne sais pas ce qui est correct, étant donné que dans ce cas il n'y a pas de lat et de lon

bool sendCellId(char * celltower0)
{
  return sendCellId(celltower0, NULL, NULL, false);
}
bool sendCellId(char * celltower0, char * lat, char * lon, bool addOrGet)
{
}

ou

bool sendCellId(char * celltower0)
{
  return sendCellId(celltower0, "","", false);
}
bool sendCellId(char * celltower0, char * lat, char * lon, bool addOrGet)
{
}

ou

bool sendCellId(char * celltower0)
{
  return sendCellId(celltower0, '\0', '\0', false);
}
bool sendCellId(char * celltower0, char * lat, char * lon, bool addOrGet)
{
}

Le dernier cas, me semble le meilleur, mais je ne sais pas si c'est exactement la meme chose qu'un NULL, ou finallement ce qui est le mieux...

Merci pour vos lumières!

Je ne comprends pas trop ce que vous dites... Ils semble que vous ayez plusieurs méthode avec des signatures différentes et la signature de la fonction complète est

sendCellId(char * , char * , char * , boolean)

La fonction attend donc 3 pointeurs vers des chaines de caractères et un booléen

'\0' c'est le caractére null, ce n'est pas un pointeur, donc ce n'est pas bon.
NULL c'est un pointeur donc c'est mieux..

sendCellID(228,03,1771,2d6f,45,05);
Je ne sais pas ce qui est correct, étant donné que dans ce cas il n'y a pas de lat et de lon

ça je ne sais pas trop ce que ça veut dire... il y'a trop de paramètres et pas typés pour que ce soit correct... C'est quoi vos chiffres dans la parenthèse?

Bonjour,
Oui pardon, j'ai mal écrit cette partie

sendCellID(228,03,1771,2d6f,45,05);

syntaxe correct est

sendCellID("228,03,1771,2d6f,45,05");

En fait, je ne sais pas ce qui est correct dans ces trois posiblité

bool sendCellId(char * celltower0)
{
  return sendCellId(celltower0, '\0', '\0', false);
}
bool sendCellId(char * celltower0, char * lat, char * lon, bool addOrGet)
{
}
bool sendCellId(char * celltower0)
{
  return sendCellId(celltower0, NULL, NULL, false);
}
bool sendCellId(char * celltower0, char * lat, char * lon, bool addOrGet)
{
}
bool sendCellId(char * celltower0)
{
  return sendCellId(celltower0, "", "", false);
}
bool sendCellId(char * celltower0, char * lat, char * lon, bool addOrGet)
{
}

mais selon tes écrits, cette syntaxe est la plus appropiée

bool sendCellId(char * celltower0)
{
  return sendCellId(celltower0, NULL, NULL, false);
}
bool sendCellId(char * celltower0, char * lat, char * lon, bool addOrGet)
{
/*
Dans ce cas, il n'y a pas de lat ou de lon, donc ils ne seront pas utilisés dans la suite du code. Je donne une valeur de NULL. soit \0
*/
}

Oui, même si

return sendCellId(celltower0, "", "", false);

Est syntaxiquement correct, je ne sais pas si la fonction retourne une erreur si on lui passe une chaîne vide versus pas de chaîne (un pointeur sur rien, c'est pas la même chose qu'un pointeur vers une chaîne mal formée. )

La notation avec des guillemets simples (apostrophe) c'est pour un caractère seul, donc vous ne passeriez pas un pointeur vers une chaîne mais le caractère NULL, qui vaut bien zéro mais Le compilateur va se plaindre d'un "type mismatch"

Bonjour,

En C/C++ la méthode couramment utilisée pour indiquer qu'un pointeur ne pointe sur aucun objet est de lui donner la valeur NULL.
Donc la méthode la plus logique pour indiquer que le paramètre n'existe pas est de passer NULL (on peut bien sur décider de faire autrement, mais pourquoi réinventer la roue).

D'autre part plutôt que de redéfinir plusieurs fonctions avec différents paramètres on peut définir des paramètres par défaut dans la déclaration de la fonction.

bool sendCellId(char * celltower0, char * lat=NULL, char * lon=NULL, bool addOrGet=false);

Ainsi sendCellId(celltower);
est équivalent à sendCellId(celltower,NULL,NULL,false);

Bien noter que la déclaration des paramètres par défaut doit être faite dans la déclaration de la fonction et non dans sa définition.

bool sendCellId(char * celltower0, char * lat=NULL, char * lon=NULL, bool addOrGet=false);


bool sendCellId(char * celltower0, char * lat, char * lon, bool addOrGet)
{
}

kamill:
Donc la méthode la plus logique pour indiquer que le paramètre n'existe pas est de passer NULL (on peut bien sur décider de faire autrement, mais pourquoi réinventer la roue).

Il faut aussi que le code à l'autre bout teste si le pointeur est NULL avant de l'utiliser ce qui n'est hélas pas toujours le cas dans les librairies écrites à la va-vite.