Bonjour,

Je souhaiterais récupérer la taille max ou en quelque sorte le "sizeof" d'un char* passé en argument d'une fonction (et donc sans fournir la taille en argument, juste le char*).

Voici un exemple pour illustrer:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void f(char* str)
{
  // ici besoin de la taille de str pour y copier une longue chaine de caractère constante
  // du genre strncpy(str, ???, constString);
}
 
int main()
{
  char buf[32];
 
  f(buf);
 
  return 0;
}
J'ai essayé plusieurs manières en vain, je précise que je souhaite trouver une solution sans fournie la taille en argument:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
void f(char* str, unsigned int size);
Le problème c'est que je pensais pouvoir récupérer la taille par un sizeof(str) mais cela renvoie la taille d'un pointeur (4 octets).
Je précise que "buf" est vide ou plutot non-initialisé avant d'être passé à la fonction f(), donc strlen(str) donnera zéro.

Voilà, donc si vous avez une solution, je suis preneur.

Merci de votre aide.