Bonjour, je suis débutant en C, et j'ai voulu crée un programme qui fait une copie d'un tableau d'entier de taille N vers un autre, pour cela , j'ai crée 4 fonctions: fonction.h fonction.c le Makefile et main.c , dont les voici .Mais ,à chaque fois que je compile, le compilateur m'affiche :
Pour le Makefile
Code :
- exe :main.o fonction.o
- gcc -o exe main.o fonction.o -Wall -lm
- fonction.o:fonction.c
- gcc -c fonction.c
- main.o :main.c fonction.h
- gcc -c main.c
- clean:
- rm *.o exe
|
Pour la fonction :"fonction.h"
Code :
- #ifndef fonction_h
- #define fonction_h
- int taille(char *s);
- int *initTAB(int n);
- int copie(int *tab,int N);
- #endif
|
Pour la fonction :"fonction.c"
Code :
- #include<stdlib.h>
- #include<stdio.h>
- #include<math.h>
- #include<string.h>
- int copie(int *tab,int N)
- {
- int *t=(int*)malloc(N*sizeof(int)); // c'est ce talbeau qui sera en "return"!!
- int k;// l'incrementation
- for (k=0;k<N;k++)
- {
- *(t+k)=*(tab+k);
- }
- return(t); // t, c'est le tableau retourné
- }
|
Et quand je compile( sous geany, avant de de le "make" ), il m'affiche cet avertissement:
Code :
- fonction.c:14:3: attention : return makes integer from pointer without a cast [enabled by default]
|
C'est quand je le caste en int (j'ai pas compris le pourquoi!!) que l'erreur disparait!
Idem pour la fonction main.c :
Code :
- #include<stdio.h>
- #include<math.h>
- #include<stdlib.h>
- #include<string.h>
- #include "fonction.h"
- int main()
- {
- int q;
- int n=5;
- int *tab;
- //tab=initTAB(n);
- int source[5]={6,5,4,3,2};
- tab=copie(source,n);
- for(q=0;q<n;q++) printf("tab[%d]=%3d\n",q,*(tab+q));
- return 0;
- }
|
le compilateur me dit:
Code :
- main.c:16:5: attention : assignment makes pointer from integer without a cast [enabled by default]
|
Je n'arrive pas à voir d'où provient mon erreur!!
---------------
Mohamed ABDEREMANE