2015-08-18 1 views
-1

J'ai deux fichiers C à savoir 'Main.c' et 'algo.c'. Le fichier main.c contient un tableau appelé index_array et se présente comme suit:Comment accéder à un tableau d'entiers d'un fichier C à un autre?

#include <stdlib.h> 
#include <stddef.h> 
#include <stdio.h> 
#include "Main.c" 

int algo(); 

int main(){ 
     int index_array []= {1,2,3,4,5,6}; 
     algo(index_array); //to call the function from the other file 
     return 0; 
     } 

L'autre fichier ressemble à ceci:

#include <stdlib.h> 
#include <stddef.h> 
#include <stdio.h> 

int algo(int index_array){ 
    ///contains an algorithm to perform an operation using the array index from the Main.c file 
     } 

Maintenant, ce que j'ai un doute est sur comment puis-je avoir accès à la tableau index_array[ ] à partir du fichier algo.c? La façon dont je l'ai essayé dans le fichier alog.c ne me permet pas d'y accéder. Il donne plutôt une erreur en disant plusieurs déclarations de 'algo'.

Quelqu'un pourrait-il me donner une idée à ce sujet?

+0

Salut, qu'est-ce que vous essayez n'est pas clair. Avez-vous une fonction qui prend comme argument un entier (qui est associé à l'index d'un élément de votre tableau) ou une fonction qui prend comme argument un tableau (dans ce cas vous devez passer un pointeur à un tableau de entiers)? En outre, pourquoi avez-vous deux déclarations distinctes pour 'algo'? Pourquoi devez-vous inclure 'Main.c', alors que vous êtes dans le fichier' Main.c'. S'il vous plaît répondez aux questions ci-dessus et essayez d'être plus clair sur ce que vous avez, ce que vous voulez et où vous êtes coincé. Merci – Christos

+0

Pourquoi ma question a-t-elle été rejetée? – Goldengirl

Répondre

2

L'approche la plus simple consistera à modifier la signature de la fonction algo() pour accepter deux paramètres, le tableau lui-même et la taille. Quelque chose comme

int algo(int *index_array, int size) { .... 

Cela dit, vous devez modifier votre déclaration avant pour correspondre à la signature de la définition de la fonction.

Maintenant, vous pouvez appeler algo du main.c fichier comme

algo(index_array, sizeof(index_array)/sizeof(index_array[0])); 

Note: S'il vous plaît supprimer #include "Main.c" de votre code. Les fichiers sources sont signifiait pour être compilé et lié ensemble pour générer le binaire.

+0

J'ai changé la déclaration comme vous me l'aviez demandé, mais cela donne toujours une erreur dans le fichier algo.c indiquant plusieurs définitions de 'algo' .. – Goldengirl

+0

@Goldengirl Veuillez supprimer '#include" Main.c "... .. –

+0

Oui, c'était le problème. Mais si je peux demander ne devrait pas fonctionner quand vous incluez le fichier 'Main.c' dans le fichier algo.c? Pourquoi donne-t-il une erreur? – Goldengirl