Ao terminal essa aula e compila-la, o prompt de comando apontou os seguintes erros:
C:\Users\ricar\Desktop\C-programmer\C-III>gcc fogefoge.c
C:\Users\ricar\AppData\Local\Temp\ccm3udh6.o:fogefoge.c:(.text+0x201): undefined reference to `lemapa'
C:\Users\ricar\AppData\Local\Temp\ccm3udh6.o:fogefoge.c:(.text+0x210): undefined reference to `imprimemapa'
C:\Users\ricar\AppData\Local\Temp\ccm3udh6.o:fogefoge.c:(.text+0x249): undefined reference to `liberamapa'
collect2.exe: error: ld returned 1 exit status
Já tentei compilar o zip dessa aula e aconteceu o mesmo erro.
Segue o código:
fogefoge.c
#include <stdio.h>
#include <stdlib.h>
#include "mapa.h"
#include "fogefoge.h"
MAPA m;
int i, j;
int acabou(){
return 0;
}
void move( char direcao){
int x, y;
for(i = 0; i < m.linhas; i++){
for(j = 0; j < m.colunas; j++){
if(m.matriz[i][j] == '@'){
x = i;
y = j;
break;
}
}
}
switch(direcao) {
case 'a':
m.matriz[x][y-1] = '@';
break;
case 'w':
m.matriz[x-1][y] = '@';
break;
case 's':
m.matriz[x+1][y] = '@';
break;
case 'd':
m.matriz[x][y+1] = '@';
break;
}
m.matriz[x][y] = '.';
}
int main() {
lemapa(&m);
do{
imprimemapa(&m);
char comando;
scanf(" %c", &comando);
move(comando);
} while(!acabou());
liberamapa(&m);
}
mapa.c
#include <stdio.h>
#include <stdlib.h>
#include "mapa.h"
int i,j;
void lemapa(MAPA* m){
FILE* f;
f = fopen("mapa.txt", "r");
if (f == 0) {
printf("Falha no carregamento do arquivo\n");
exit(1);
}
fscanf(f, "%d %d", &(m->linhas), &(m->colunas));
printf("linhas %d colunas %d\n", m->linhas, m->colunas);
alocamapa(m);
for(i = 0; i < 5; i++){
//mapa[i] = passa a linha toda caso nao tiver outro parametro da matriz
fscanf(f, "%s", m->matriz[i]);
}
fclose(f);
}
void alocamapa(MAPA* m){
m->matriz = malloc(sizeof(char*) * m->linhas);
for(i = 0; i < m->linhas; i++){
m->matriz[i] = malloc(sizeof(char) * ( m->colunas + 1 ));
}
}
void liberamapa(MAPA* m){
for(i = 0; i < m->linhas; i++){
free(m->matriz[i]);
}
free(m->matriz);
}
void imprimemapa(MAPA* m){
for(i = 0; i < 5; i++){
printf("%s\n", m->matriz[i]);
}
}
fogefoge.h
int acabou();
void move(char direcao);
mapa.h
struct mapa {
char** matriz;
int linhas;
int colunas;
};
typedef struct mapa MAPA;
void lemapa(MAPA* m);
void imprimemapa(MAPA* m);
void liberamapa(MAPA* m);
void alocamapa(MAPA* m);
Baixei o Dev-C++ 5.11 para rodar no cmd. Uso o sublime como editor.