Partage
  • Partager sur Facebook
  • Partager sur Twitter

probléme avec mon conpilateur gcc

Sujet résolu
    12 novembre 2017 à 0:01:33

    bonjours a tous, dons je compiles sous ubuntu en ligne de commande avec gcc.

    Mais lors ce que j'utilise des fonctons telles que fgts() fgetc() ...

    mon compilateur m'indique que la fonction est dangereuse.

    main.c: In function ‘main’:
    main.c:36:2: warning: implicit declaration of function ‘gets’ [-Wimplicit-function-declaration]
      gets(mot);
      ^
    /tmp/ccgIIBHj.o : Dans la fonction « main » :
    main.c:(.text+0x46): avertissement : the `gets' function is dangerous and should not be used.
    

    je ne trouve pas l erreur et ne comprends pas pourquoi, et il ne m indique cette erreur seulement aprés que j ai corrigé les erreur de mon programme.

    voici le code que je compile.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(int argc, char **argv)
    {
    	char mot[100],i=-1,j,test=0;
    	
    	printf("\nentrer un mot ou une phrase de moins de 100 catacteres!!!\n");
    
    	//scanf(" %99[a-zA-z ]",mot);
    	gets(mot);
    	while(getchar()!='\n');
    	    	
    	j=strlen(mot);
    	
    	while((++i<--j)&& test==0)//boucle pour comparer le début et la fin de chaque string.
    	{
    	    while(i==32)i++;//double boucle pour passer les espaces
     	    while(j==32)j--;
    	    
    	    if((mot[i]==mot[j])||(mot[i]+32==mot[j])||(mot[i]==mot[j]+32)) test=0;  //  test pour comparer les lettres
    	    else test=1; //si difference test se met a 1 et on sort de la boucle.       minuscule et majuscule 
    	}
    	
    	if(test == 0)printf("le mot ou la phrase: %s (est un palindome)!!!\n",mot);//réponce au test et affichage.
    	else printf("le mot ou la phrase:%s (n'est pas un palindome)!!!\n",mot);
    	
    	return 0;
    }
    


    ce qui est bizarre c est que le getchar() seul ne cause aucun problème.

    merci a tous

    • Partager sur Facebook
    • Partager sur Twitter
      12 novembre 2017 à 20:23:05

      bonjours, j ai trouver un problèmes similaire sur le forum mais avec la bibliothèque math.h.

      ou il suffisais d ajouter le paramétré -lm pour stipuler ou se trouvais la bibliothèque math.h.

      mais le moyen pour résoudre le problème ne marche pas avec string.h mais doit être similaire.

      j ai aussi essayer de regarder dans "man gcc" mais rien de trés concluent mémé au ligne ou il parlais du paramétré -lm.

      • Partager sur Facebook
      • Partager sur Twitter
        13 novembre 2017 à 13:44:25

        Salut

        Pour être clair , il n ' y a pas d'erreur mais juste un avertissement du linker . Si on fait une recherche sur internet avec ce message ( ce qu'on devrait faire systématiquement avant de venir sur un forum) , on a la réponse . Elle est disponible aussi sur le manuel au format textinfo sur sa machine : Tapez dans un terminal :

        info libc gets

        A plus

        • Partager sur Facebook
        • Partager sur Twitter
          13 novembre 2017 à 17:12:05

          De toute façon le man ne dira rien de plus que l'avertissement du compilo

          > the `gets' function is dangerous and should not be used.

          En fait, il y a même certains manuels (man gets) qui mette en gras dans la description "Ne jamais utiliser cette fonction".

          Ce n'est pas quelle soit buguée, c'est que l'usage même de cette fonction est un bug puisqu'il est impossible de mettre une limite sur la taille du buffer. Les fonctions à utiliser sont les versions ditent "secure" tel que get_s. Hélas optionnelle est non implémentée par gcc.

          Mais contrairement à ce que tu prétends, tu n'utilises pas fgets puisque celle-ci n'a pas le défaut de gets: la taille du buffer est obligatoire.

          • Partager sur Facebook
          • Partager sur Twitter

          probléme avec mon conpilateur gcc

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown