Makes pointer from integer without a cast . . . [Résolu]

Messages postés
22
Date d'inscription
mercredi 21 novembre 2007
Dernière intervention
7 avril 2010
- - Dernière réponse : Crocandrew
Messages postés
22
Date d'inscription
mercredi 21 novembre 2007
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
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
22
Date d'inscription
mercredi 21 novembre 2007
Dernière intervention
7 avril 2010
3
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Crocandrew
Messages postés
14339
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
18 janvier 2019
5802
3
Merci
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...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BunoCS
Messages postés
22
Date d'inscription
mercredi 21 novembre 2007
Dernière intervention
7 avril 2010
3
3
Merci
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 ;)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Crocandrew
Messages postés
14339
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
18 janvier 2019
5802
3
Merci
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...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BunoCS
Messages postés
22
Date d'inscription
mercredi 21 novembre 2007
Dernière intervention
7 avril 2010
3
3
Merci
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);
    }

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Crocandrew
Messages postés
14339
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
18 janvier 2019
5802
3
Merci
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...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BunoCS
Messages postés
22
Date d'inscription
mercredi 21 novembre 2007
Dernière intervention
7 avril 2010
3
3
Merci
Un grand merci à toi Buno
 
ça fonctionne nickel . 

Bonne journée et encore merci  

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Crocandrew
Messages postés
14339
Date d'inscription
lundi 11 juillet 2005
Dernière intervention
18 janvier 2019
5802
0
Merci
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...
Commenter la réponse de BunoCS
Messages postés
22
Date d'inscription
mercredi 21 novembre 2007
Dernière intervention
7 avril 2010
3
0
Merci
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.
Commenter la réponse de Crocandrew

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.