Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
radicalboy

[Duvida] - Linkagem e Strtok

Recommended Posts

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.

Share this post


Link to post
Share on other 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/

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.