[C] Probleme types de variables - Debutant

Probleme types de variables - Debutant [C] - C - Programmation

Marsh Posté le 09-06-2008 à 17:00:29    

Bonjour,
je debute en C et je dois faire un petit programme de tri. Pour l'instant, je stock les donnes en parametre dans un buffer,mais j'aimerai "renvoyer" ce buffer dans une autre fonction. Sauf qu'a la compilation, j'ai un message qui me dit qu'il y a incompatibilite entre les deux declarations de variables.
Pourant 'buf' est bien un char** non ?
 
Merci d'avance, voici mon code :
 
int show(char **buf)    /*Je voudrai juste tester sir le buffer est bien "arrive" sur cette fonction*/
{
  int i = 0;
  for (;buf;i++)
    printf("%s", buf[i]);
  return(0);
}
 
int alloc(char **argv)
{
  char buf[1024][1024];
  int i, j;
  for (i = 1; argv[i]; i++)
    {
      for (j = 0; argv[i][j]; j++)
 {
   if (argv[i][j] >= 97 && argv[i][j] <= 122)     [i]/*Je met tous le texte en MAJ*/

       buf[i][j] = argv[i][j] -= 32;
   else
       buf[i][j] = argv[i][j];
 }
    }
  show(buf);
  return (0);
}
 
 
int main(int argc, char **argv)
{
  if (argc < 2)
    {
      printf("\n" );
      exit(-1);
    }
  alloc(argv);
  return (0);
}
 
 
Voici le message a la compile :  
In function 'alloc': warning: passing argument 1 of 'show' from incompatible pointer type


Message édité par blobloblo le 09-06-2008 à 17:02:17
Reply

Marsh Posté le 09-06-2008 à 17:00:29   

Reply

Marsh Posté le 09-06-2008 à 17:09:56    

un tableau n'est pas un pointeur :o
donc soit tu passe par des mallocs pr creer buffer soit tu corrige le prototype de show :
 
int show( char buffer[][1024] );
 
Je t'enjoins néanmoins à utiliser l'allocation dynamique. J'ai deja donné une reponse précise pr les tableaux 2D efficace dans un autre topic.

Reply

Marsh Posté le 09-06-2008 à 17:56:41    

Ton show marche pas. Si ton char** est terminé par un NULL (comme argv l'est, ie argv[argc] == NULL), fais un for ( ; *buf; ++buf) puts(*buf);

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed