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

Crocandrew 22 Messages postés mercredi 21 novembre 2007Date d'inscription 7 avril 2010 Dernière intervention - 14 avril 2009 à 16:38 - Dernière réponse : Crocandrew 22 Messages postés mercredi 21 novembre 2007Date d'inscription 7 avril 2010 Dernière intervention
- 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
Crocandrew 22 Messages postés mercredi 21 novembre 2007Date d'inscription 7 avril 2010 Dernière intervention - 14 avril 2009 à 21:40
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

Merci Crocandrew 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Crocandrew
Meilleure réponse
BunoCS 14181 Messages postés lundi 11 juillet 2005Date d'inscription 23 octobre 2018 Dernière intervention - 15 avril 2009 à 09:43
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...

Merci BunoCS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de BunoCS
Meilleure réponse
Crocandrew 22 Messages postés mercredi 21 novembre 2007Date d'inscription 7 avril 2010 Dernière intervention - 15 avril 2009 à 11:05
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 ;)

Merci Crocandrew 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Crocandrew
Meilleure réponse
BunoCS 14181 Messages postés lundi 11 juillet 2005Date d'inscription 23 octobre 2018 Dernière intervention - 15 avril 2009 à 11:19
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...

Merci BunoCS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de BunoCS
Meilleure réponse
Crocandrew 22 Messages postés mercredi 21 novembre 2007Date d'inscription 7 avril 2010 Dernière intervention - 15 avril 2009 à 12:57
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);
    }

Merci Crocandrew 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Crocandrew
Meilleure réponse
BunoCS 14181 Messages postés lundi 11 juillet 2005Date d'inscription 23 octobre 2018 Dernière intervention - 15 avril 2009 à 14:08
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...

Merci BunoCS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

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

Bonne journée et encore merci  

Merci Crocandrew 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Crocandrew
BunoCS 14181 Messages postés lundi 11 juillet 2005Date d'inscription 23 octobre 2018 Dernière intervention - 14 avril 2009 à 17:03
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
Crocandrew 22 Messages postés mercredi 21 novembre 2007Date d'inscription 7 avril 2010 Dernière intervention - 15 avril 2009 à 11:02
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.