Ir ao conteúdo
  • Cadastre-se

Ajuda com passagem de arrays para função


vtergolina

Posts recomendados

Ola pessoal, bom, eu tenho 2 programas separados em C e transformei um deles numa função para o programa principal "main" só que na hora de passar os arrays do main.c para a função.o resolver descobri que os arrays não estão indo mesmo a compilação tendo dado certo, vou mostrar pedaços dos codigos dos dois que são relevantes, se souberem como me ajudar agradeço muito.

Main.c


#include <stdio.h>

void funcao( float Sx[], float h[], float Cor[][4], int PontosSpec, int v );

int main()
{
int v, PontosSpec;
float Sx[N], h[N], Cor[N][4];
...

funcao(Sx, h, Cor, PontosSpec, v);

...
}

funcao.o


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

void funcao( float Sx[], float h[], float Cor[][4], int PontosSpec, int v )
{
...
}

Os dois programas funcionam perfeitamente, mas testei uma simples passagem de inteiro pra adição pra ver se a função recebe variáveis do main e não esta dando certo.

Usei o gcc como compilador e compilei os 2 em um executável.

Link para o comentário
Compartilhar em outros sites

#include <stdio.h>
#include <stdlib.h>
#define N 2

void funcao( float Sx[], float h[], float Cor[][4], int PontosSpec, int v );

int main()
{
int v, PontosSpec;
float Sx[N], h[N], Cor[N][4];

Sx[1] = 1;
h[1] = 2;
Cor[1][4] = 3;
v = 4;
PontosSpec = 5;

funcao(Sx, h, Cor, PontosSpec, v);
}

void funcao( float Sx[], float h[], float Cor[][4], int PontosSpec, int v )
{
Sx[1] = Sx[1] + 1;
h[1] = h[1] + 1;
Cor[1][4] = Cor[1][4] +1;
v = v + 1;
PontosSpec = PontosSpec + 1;

printf("Sx[1] = %f\nh[1] = %f\nCor[1][4] = %f\nv = %d\nPontosSpec = %d\n", Sx[1], h[1], Cor[1][4], v, PontosSpec);
}

Eu defini o N lá no inicio com o valor 2 tenta dessa maneira pra ver se funciona.

Ah se quiser pode dividir em arquivos separados o programa que também vai dar certo.

Link para o comentário
Compartilhar em outros sites

É que na verdade os programas são arquivos separados, 1 é o main.c o outro o funcao.o, justamente por isso eu estou usando esse método pra passar os arrays de um pra outro, só que no final a função tem que devolver os arrays resolvidos pro programa main,c que imprime a resposta.

Link para o comentário
Compartilhar em outros sites

O que seria esse arquivo funcao.o? Pode dividir em dois arquivos como tu quer, o main.c e funcao.c com funcao.o acho que não da certo.

Aqui estão os dois arquivos.

main.c

#include <stdio.h>
#include <stdlib.h>
#define N 2

float *funcao( float Sx[], float h[], float Cor[][4], int PontosSpec, int v );

int main()
{
int v, PontosSpec;
float Sx[N], h[N], Cor[N][4], *resultados;

Sx[1] = 1;
h[1] = 2;
Cor[1][4] = 3;
v = 4;
PontosSpec = 5;

resultados = funcao(Sx, h, Cor, PontosSpec, v);
printf("Sx[1] = %f\nh[1] = %f\nCor[1][4] = %f\nv = %.0f\nPontosSpec = %.0f\n", resultados[0], resultados[1], resultados[2], resultados[3], resultados[4]);
return 0;
}

funcoes.c

float *funcao( float Sx[], float h[], float Cor[][4], int PontosSpec, int v )
{
float *resultados;

resultados = malloc(4 * sizeof(float));
Sx[1] = Sx[1] + 1;
resultados[0] = Sx[1];
h[1] = h[1] + 1;
resultados[1] = h[1];
Cor[1][4] = Cor[1][4] +1;
resultados[2] = Cor[1][4];
v = v + 1;
resultados[3] = v;
PontosSpec = PontosSpec + 1;
resultados[4] = PontosSpec;

return resultados;
}

Salva esses dois arquivos e compila usando um makefile. Se não souber usar makefile não tem problema. Procura no google por makefile generico para c, poe esse makefile na mesma pasta que esses dois arquivos .c, abre esse diretorio em um terminal e digita "make" que ele vai compilar e no final ele te diz o comando para executar o programa que vai ser "./algumacoisa".

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!