Makes pointer from integer without a cast . . .

Résolu
Crocandrew Messages postés 22 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 7 avril 2010 - 14 avril 2009 à 16:38
Crocandrew Messages postés 22 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 7 avril 2010 - 15 avril 2009 à 14:28
Bien le bonjour,

je suis en train de réaliser mon projet de fin d'anée en C, et j'ai un petit probème en ce qui concerne la fonction strcpy !!

A chaque fois que je l'utilise j'ai des messages d'erreurs dans le genre : makes pointer from integer without a cast ...

J'ai essayé de faire un malloc, un realloc mais ça ne vas pas... ou du moins je fais la mauvaise manip...
c'est vraiement un bête truc et ça commence a m'énerver.

Merci d'avance
A voir également:

9 réponses

Crocandrew Messages postés 22 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 7 avril 2010 4
14 avril 2009 à 21:40
Voila merci d'avance.

C'est dans le cadre d'une ouverture de fichier.
Je tente de récupérer une série de noms de maison d'édition puis de les mettres dans un tableau.
mon fichier txt est sous cette forme : 
         blabla#blabla#blalvla#etc

code:

fichier = fopen("bdd.txt", "r");



    if (fichier != NULL)
    {
        // Boucle de lecture des caractères un à un
        do
        {
            if( caractereActuel != '#')// # est le caractère qui sépare mes noms d'éitions
{
                caractereActuel = fgetc(fichier);// On lit le caractère
                strcpy(mot,caractereActuel); // on le copie dans mot
            }
            else{ 

                strcpy(TabMaisonEdit[cptEdition].nomEdition,mot);  //On copie le mot COMPLET dans le tableau

                strcpy("",mot);// la chaine de caractère mot est formatée
                caractereActuel = fgetc(fichier); // on avance d'un caractère pour ne pas rester sur le #
                cptEdition++;// on augmente d'une édition, pour avancer dans le tableau
            }



        } while (caractereActuel != EOF);
// On continue tant que fgetc n'a pas retourné EOF (fin de fichier)



        fclose(fichier); 
 }







j'espère que c'est lisible.

merci
3
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
15 avril 2009 à 09:43
3 choses:
- strcpy() prend en paramètres 2 chaines de caractères: la 1ere c'est la destination, la 2e, c'est la source
- strpcy("",mot): suivant ce que je viens d'écrire, tu dois comprendre le souci de cette écriture, non? tu as inversé les 2 paramètres
- enfin, strcpy "écrase" la chaine de destination. Ce que tu voudrait faire serait plutôt une concaténation, non? Dans ce cas, strcat()

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
3
Crocandrew Messages postés 22 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 7 avril 2010 4
15 avril 2009 à 11:05
AAh oui juste merci !   

Mais j'ai toujours ce warning la , pous la ligne que j'ai mise en rouge :

passing arg 2 of 'strcat' makes pointer from integer withut a cast ...

je t'ai remis le code à partir de mes déclarations de variables ; 

FILE* fichier = NULL ;
char caractereActuel ; fichier fopen("bdd.txt", "r");     if (fichier ! NULL)
    {
        do
        {
            if( caractereActuel != '#')
{
                caractereActuel = fgetc(fichier);
                strcat(mot,caractereActuel);             }
            else{ 

                strcpy(TabMaisonEdit[cptEdition].nomEdition,mot);
                strcpy("",mot);
                caractereActuel = fgetc(fichier); 
                cptEdition++;
            }

        } while (caractereActuel != EOF);

        fclose(fichier); 
 }

merci de ton aide.

Crocandrew ;)
3
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
15 avril 2009 à 11:19
Oui, même remarque qu'avec strcpy: strcat prend en paramètre 2 chaines de caractères, et non une chaine et un caractère

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Crocandrew Messages postés 22 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 7 avril 2010 4
15 avril 2009 à 12:57
Ok ok j'ai changé ma manière de faire, je n'ai plus d'erreur de compil mais le résultat est pas terrble.Quand j'affiche ma variable mot il y a bien le mot voulu, mais a la suite il ya par exemple: motvoulu/>:-w

ça donne ça ;

    fichier = fopen("bdd.txt", "r");
    caractereActuel= fgetc(fichier); 
    int position = 0 ;

    if (fichier != NULL)
    {
        while (caractereActuel != EOF){ 




            if( caractereActuel != '#' ){
                mot[position] = caractereActuel ;
                position++;
                caractereActuel= fgetc(fichier);






            }
            else{
                mot[position]="\0";
                printf("\n%s",mot);
                strcpy(TabMaisonEdit[cptEdition].nomEdition,mot); 
                strcpy(mot,""); 
                caractereActuel = fgetc(fichier);
                position=0;
                cptEdition++; 
            }






        }
        fclose(fichier);
    }
3
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
15 avril 2009 à 14:08
mot[position]="\0";



à remplacer par: mot[position]='\0'; // simple cote

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
3
Crocandrew Messages postés 22 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 7 avril 2010 4
15 avril 2009 à 14:28
Un grand merci à toi Buno
 
ça fonctionne nickel . 

Bonne journée et encore merci  
3
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
14 avril 2009 à 17:03
Hello,
Peux-tu nous montrer ton utilisation de strcpy(), stp?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Crocandrew Messages postés 22 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 7 avril 2010 4
15 avril 2009 à 11:02
AAh oui juste merci !   

Mais j'ai toujours ce warning la , pous la ligne que j'ai mise en rouge :

passing arg 2 of 'strcat' makes pointer from integer withut a cast ...

je t'ai remis le code à partir de mes déclarations de variables ; 

FILE* fichier = NULL ;
char caractereActuel ; fichier fopen("bdd.txt", "r");     if (fichier ! NULL)
    {
        // Boucle de lecture des caractères un à un
        do
        {
            if( caractereActuel != '#')// # est le caractère qui sépare mes noms d'éitions
{
                caractereActuel = fgetc(fichier);// On lit le caractère
                strcat(mot,caractereActuel); // on le copie dans mot
            }
            else{ 

                strcpy(TabMaisonEdit[cptEdition].nomEdition,mot);  //On copie le mot COMPLET dans le tableau

                strcpy("",mot);// la chaine de caractère mot est formatée
                caractereActuel = fgetc(fichier); // on avance d'un caractère pour ne pas rester sur le #
                cptEdition++;// on augmente d'une édition, pour avancer dans le tableau
            }

        } while (caractereActuel != EOF);// On continue tant que fgetc n'a pas retourné EOF (fin de fichier)

        fclose(fichier); 
 }

merci de ton aide.
0
Rejoignez-nous