Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

radicalboy

[Duvida] - Linkagem e Strtok

Mensagens Recomendadas

radicalboy

Ora então é assim:

neste momento tenho 3 ficheiros:

main.c main.h draw.c

no draw apenas tenho funcoes para desenhar numa matriz (char game[10][20])  que está definida no main.h. Este ficheiro so tem 2 funcionalidades, alterar o conteudo da matriz e uma funcao que faz imprimir para stdout.

Em ambos os ficheiros fiz #include "main.h" e dá erro, multiplas definições. Como linkar estes 2 ficheiros num Makefile?! Costuma usar as flags -Wall -pedantic -ansi

Quanto ao Strtok, tenho um ficheiro que vou lendo e depois vou tratando linha a linha..

O input é algo como:

1 4 5 A

E o problema é que tenho a funcao definida:

void add(char *s) {

  char *p;

  int inicio, fim, quantidade;

  char c;

  p = strtok(s, " ");

#PROBLEMA#

variavel.start = inicio;

variavel.end = fim;

variavel.times = quantidade;

variavel.carac = c;

}

para remover os espaços. O objectivo é separar cada elemento, para depois adicionar numa estrutura de variaveis.

Mas ele nao tem dividido da forma que quero.

O objectivo era :

inicio = 1;

fim = 4;

quantidade = 5;

c=A;

para depois meter numa estrutura:

struct Tab{

int start;

int end;

int times;

char carac;

}

O problema está em atribuir valores ao inicio, fim separando a string recebida.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Baderous

Ora então é assim:

neste momento tenho 3 ficheiros:

main.c main.h draw.c

no draw apenas tenho funcoes para desenhar numa matriz (char game[10][20])  que está definida no main.h. Este ficheiro so tem 2 funcionalidades, alterar o conteudo da matriz e uma funcao que faz imprimir para stdout.

Em ambos os ficheiros fiz #include "main.h" e dá erro, multiplas definições. Como linkar estes 2 ficheiros num Makefile?! Costuma usar as flags -Wall -pedantic -ansi

O erro das múltiplas definições ocorre porque quando vais compilar um dos .c que tens, o outro já foi compilado, e por conseguinte, main.h também, logo o compilador já conhece as definições presentes no main.h. Ao compilar o outro .c, vai encontrar novas definições para o que já conhece e vai reportar o erro. Para evitar isso, podes usar as seguintes directivas no teu main.h:

#ifndef MAIN_H
#define MAIN_H

// codigo

#endif

Quanto ao Strtok, tenho um ficheiro que vou lendo e depois vou tratando linha a linha..

O input é algo como:

1 4 5 A

E o problema é que tenho a funcao definida:

void add(char *s) {

  char *p;

  int inicio, fim, quantidade;

  char c;

  p = strtok(s, " ");

#PROBLEMA#

variavel.start = inicio;

variavel.end = fim;

variavel.times = quantidade;

variavel.carac = c;

}

para remover os espaços. O objectivo é separar cada elemento, para depois adicionar numa estrutura de variaveis.

Mas ele nao tem dividido da forma que quero.

O objectivo era :

inicio = 1;

fim = 4;

quantidade = 5;

c=A;

para depois meter numa estrutura:

struct Tab{

int start;

int end;

int times;

char carac;

}

O problema está em atribuir valores ao inicio, fim separando a string recebida.

Vê o funcionamento da strtok aqui: http://www.cplusplus.com/reference/clibrary/cstring/strtok/

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.