I made a code that reads a file and creates a map based on the coordinates of that file, but all code functions have the error "Undefined reference to" The compiler shows the following errors:
main.c|23|undefined reference to 'Preenche_Boia'|
main.c|28|undefined reference to 'Preenche_aviao'|
main.c|32|undefined reference to 'Preenche_Submarino'|
main.c|36|undefined reference to 'Preenche_espiao1'|
main.c|40|undefined reference to 'Preenche_espiao2'|
main.c|44|undefined reference to 'Preenche_porta_aviao'|
main.c|48|undefined reference to 'Imprime_Matriz'|
That is, ALL the functions. Here is the code:
Battle.h
#ifndef BATALHA_H_INCLUDED
#define BATALHA_H_INCLUDED
#include<stdio.h>
#include<stdlib.h>
#include<stdlib.h>
#include<string.h>
#define MAX 20
void Inicia_matriz(char mapa[][MAX]);
void Preenche_Boia(char mapa[][MAX], int linha, int coluna);
void Imprime_Matriz(char mapa [][MAX]);
void Preenche_Submarino(char mapa[][MAX], int id, int hor, int linha, int coluna);
void Preenche_aviao(char mapa[][MAX],int id,int hor,int linha,int coluna);
void Aviao_leste(char mapa[][MAX],int id,int linha, int coluna);
void Aviao_sul(char mapa[][MAX],int id,int linha, int coluna);
void Aviao_oeste(char mapa[][MAX],int id,int linha, int coluna);
void Aviao_norte(char mapa[][MAX],int id,int linha, int coluna);
void Preenche_espiao1(char mapa[][MAX],int id,int hor,int linha, int coluna);
void espiao1_leste(char mapa[][MAX],int id,int linha, int coluna);
void espiao1_sul(char mapa[][MAX],int id,int linha, int coluna);
void espiao1_oeste(char mapa[][MAX],int id,int linha, int coluna);
void espiao1_norte(char mapa[][MAX],int id,int linha, int coluna);
void Preenche_espiao2(char mapa[][MAX],int id, int hor, int linha, int coluna);
void espiao2_leste(char mapa[][MAX],int id,int linha, int coluna);
void espiao2_sul(char mapa[][MAX],int id,int linha, int coluna);
void espiao2_oeste(char mapa[][MAX],int id,int linha, int coluna);
void espiao2_norte(char mapa[][MAX],int id,int linha, int coluna);
void Preenche_porta_aviao(char mapa[][MAX],int id,int hor,int linha, int coluna);
void Conta_func(char mapa[][MAX]);
#endif // BATALHA_H_INCLUDED
Battle.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include"batalha.h"
#define MAX 20
void Inicia_matriz(char mapa[][MAX])
{
int i,j;
for(i=0; i<MAX; i++)
{
for(j=0; j<MAX; j++)
{
mapa[i][j]=42;
}
}
}
void Preenche_Boia(char mapa [][MAX], int linha, int coluna)
{
mapa[linha][coluna]=48;
}
void Imprime_Matriz(char mapa[][MAX])
{
int i, j;
char ch;
for(i=0; i<MAX; i++)
{
for(j=0; j<MAX; j++)
{
printf("%c", mapa[i][j]);
}
printf("\n");
}
}
void Preenche_Submarino(char mapa [][MAX], int id, int hor, int linha, int coluna)
{
int i,j;
if(hor==3||hor==4)
{
for(i=coluna; i<(coluna+4); i++)
{
mapa[linha][i]=id;
}
}
else if (hor==0||hor==1)
{
for(i=linha; i<(linha+4); i++)
{
mapa[i][coluna]=id;
}
}
}
void Preenche_porta_aviao(char mapa[][MAX], int id, int hor, int linha, int coluna)
{
int i, j;
if(hor==3||hor==4)
{
for(i=linha; i<(linha+2); i++)
{
for(j=coluna; j<(coluna+5); j++)
{
mapa[i][j]=5;
}
}
}
else if(hor==0||hor==1)
{
for(i=linha; i<(linha+5); i++)
{
for(j=coluna; j<(coluna+2); j++)
{
mapa[i][j]=5;
}
}
}
}
void Preenche_aviao(char mapa[][MAX],int id, int hor, int linha, int coluna)
{
if(hor==0)
{
Aviao_norte(mapa,id,linha,coluna);
}
else if(hor==1)
{
Aviao_sul(mapa,id,linha,coluna);
}
else if(hor==2)
{
Aviao_oeste(mapa,id,linha,coluna);
}
else if(hor==3)
{
Aviao_leste(mapa,id,linha,coluna);
}
}
void Aviao_oeste(char mapa[][MAX], int id, int linha, int coluna)
{
int i,j;
for(i=linha; i<(linha+3); i++)
{
if(i==linha)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=mapa[i][coluna+1];
}
else if(i==linha+1)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
}
else if (i==linha+2)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=mapa[i][coluna+1];
}
}
}
void Aviao_norte(char mapa[][MAX], int id, int linha, int coluna)
{
int i,j;
for(i=linha; i<(linha+2); i++)
{
if(i==linha)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=id;
}
else if(i==linha+1)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=mapa[i][coluna+2];
}
}
}
void Aviao_leste(char mapa[][MAX],int id, int linha, int coluna)
{
int i,j;
for(i=linha; i<(linha+3); i++)
{
if(i==linha)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=id;
}
else if(i==linha+1)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
}
else if (i==linha+2)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=id;
}
}
}
void Aviao_sul(char mapa[][MAX], int id, int linha, int coluna)
{
int i,j;
for(i=linha; i<(linha+2); i++)
{
if(i==linha)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=mapa[i][coluna];
}
else if(i==linha+1)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=id;
}
}
}
void Preenche_espiao1(char mapa[][MAX], int id, int hor, int linha , int coluna)
{
if(hor==0)
{
espiao1_norte(mapa,id,linha,coluna);
}
else if(pos==1)
{
espiao1_sul(mapa, id , linha , coluna);
}
else if(pos==2)
{
espiao1_oeste(mapa, id, linha , coluna);
}
else if(pos==3)
{
espiao1_leste(mapa, id , linha , coluna);
}
}
void espiao1_leste(char mapa[][MAX], int id , int linha, int coluna)
{
int i;
for(i=linha; i<(linha+3); i++)
{
if(i==linha)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=mapa[i][coluna+3];
}
else if(i==linha+1)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=id;
mapa[i][coluna+3]=id;
}
else if(i==linha+2)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=mapa[i][coluna+3];
}
}
}
void espiao1_oeste(char mapa[][MAX], int id, int linha, int coluna)
{
int i;
for(i=linha; i<(linha+3); i++)
{
if(i==linha)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=id;
}
else if(i==linha+1)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=id;
mapa[i][coluna+3]=id;
}
else if(i==linha+2)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=id;
}
}
}
void espiao1_sul(char mapa[][MAX], int id, int linha, int coluna)
{
int i;
for(i=coluna; i<(coluna+3); i++)
{
if(i==coluna)
{
mapa[linha][i]=id;
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=mapa[linha+3][i];
}
else if(i==coluna+1)
{
mapa[linha][i]=id;
mapa[linha+1][i]=id;
mapa[linha+2][i]=id;
mapa[linha+3][i]=id;
}
else if (i==coluna+2)
{
mapa[linha][i]=id;
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=mapa[linha+3][i];
}
}
}
void espiao1_norte(char mapa[][MAX], int id , int linha , int coluna)
{
int i;
for(i=coluna; i<(coluna+3); i++)
{
if(i==coluna)
{
mapa[linha][i]=mapa[linha][i];
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=id;
}
else if(i==coluna+1)
{
mapa[linha][i]=id;
mapa[linha+1][i]=id;
mapa[linha+2][i]=id;
mapa[linha+3][i]=id;
}
else if (i==coluna+2)
{
mapa[linha][i]=mapa[linha][i];
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=id;
}
}
}
void Preenche_espiao2(char mapa[][MAX], int id, int hor, int linha, int coluna)
{
if(hor==0)
{
espiao2_norte(mapa,id,linha,coluna);
}
else if(hor==1)
{
espiao2_sul(mapa,id,linha,coluna);
}
else if(hor==2)
{
espiao2_oeste(mapa,id,linha,coluna);
}
else if(hor==3)
{
espiao2_norte(mapa,id,linha,coluna);
}
}
}
void espiao2_leste(char mapa[][MAX],int id,int linha,int coluna)
{
int i;
for(i=linha; i<(linha+3); i++)
{
if(i==linha)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=mapa[i][coluna+3];
}
else if(i==linha+1)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=id;
mapa[i][coluna+3]=id;
}
else if(i==linha+2)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=mapa[i][coluna+3];
}
}
}
void espiao2_oeste(char mapa[][MAX],int id,int linha,int coluna)
{
int i;
for(i=linha; i<(linha+3); i++)
{
if(i==linha)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=id;
}
else if(i==linha+1)
{
mapa[i][coluna]=id;
mapa[i][coluna+1]=id;
mapa[i][coluna+2]=id;
mapa[i][coluna+3]=id;
}
else if(i==linha+2)
{
mapa[i][coluna]=mapa[i][coluna];
mapa[i][coluna+1]=mapa[i][coluna+1];
mapa[i][coluna+2]=mapa[i][coluna+2];
mapa[i][coluna+3]=id;
}
}
}
void espiao2_sul(char mapa[][MAX],int id, int linha, int coluna)
{
int i;
for(i=coluna; i<(coluna+3); i++)
{
if(i==coluna)
{
mapa[linha][i]=id;
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=mapa[linha+3][i];
}
else if(i==coluna+1)
{
mapa[linha][i]=id;
mapa[linha+1][i]=id;
mapa[linha+2][i]=id;
mapa[linha+3][i]=id;
}
else if (i==coluna+2)
{
mapa[linha][i]=id;
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=mapa[linha+3][i];
}
}
}
void espiao2_norte(char mapa[][MAX], int id , int linha, int coluna)
{
int i;
for(i=coluna; i<(coluna+3); i++)
{
if(i==coluna)
{
mapa[linha][i]=mapa[linha][i];
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=id;
}
else if(i==coluna+1)
{
mapa[linha][i]=id;
mapa[linha+1][i]=id;
mapa[linha+2][i]=id;
mapa[linha+3][i]=id;
}
else if (i==coluna+2)
{
mapa[linha][i]=mapa[linha][i];
mapa[linha+1][i]=mapa[linha+1][i];
mapa[linha+2][i]=mapa[linha+2][i];
mapa[linha+3][i]=id;
}
}
}
main.c
#include <stdio.h>
#include <stdlib.h>
#include"batalha.h"
#define MAX 20
int main()
{
char mapa [MAX][MAX];
int quantidade, id, hor, linha, coluna;
FILE*arq;
char url[]="tabuleiro1.txt";
arq=fopen(url,"r");
if(arq==NULL)
{
printf("ERRO");
}
else
{
while(fscanf(arq,"%d %d %d %d %d",&quantidade,&id,&hor,&linha,&coluna)!=EOF)
{
if(id==48)
{
Preenche_Boia(mapa,linha,coluna);
}
else if(id==49)
{
Preenche_aviao(mapa,id,hor,linha,coluna);
}
else if(id==50)
{
Preenche_Submarino(mapa,id,hor,linha,coluna);
}
else if(id==51)
{
Preenche_espiao1(mapa,id,hor,linha,coluna);
}
else if(id==52)
{
Preenche_espiao2(mapa,id,hor,linha,coluna);
}
else if (id==53)
{
Preenche_porta_aviao(mapa,id,hor,linha,coluna);
}
}
}
Imprime_Matriz(mapa);
printf("Hello world!\n");
return 0;
}