Archive for novembro, 2010

Configurando o Dev-C++ para entender parametrôs e criando bibliotecas externas

Depois de um longo inverno, aqui estamos…
Apresento hoje um vídeo onde demostro como configurar o Dev-C++ para passar parametros na execução de um programa. Isso é usado quando queremos testar a função main passando argumentos para ela.
Já postado aqui com o titulo de “A declaração “padrão”da função Main” a explanação do comportamento dos argumentos, agora mostro de forma a não precisar entrar no “Prompt de Comando” para realizar esses testes.
Na segunda parte do vídeo faço um exemplo de como criar bibliotecas, os arquivos necessários e a ligação deles.

Espero que aproveitem o vídeo
Obs.. na segunda aula de ponteiro postado aqui, no final do vídeo demostro o funcionamento da argc, argv, quem ainda tiver dúvidas pode recorrer ao vídeo

Códigos:
exemplo.c // argc, argv

#include <stdio.h>
#include <string.h>

// utilizando os argumentos da funcao main

int main (int argc, char const *argv[])
{
	// argc - Variavel que contem o numero de argumentos recebido pela funcao main
	// argv - Matriz de strings, contendo em cada posicao, cada um dos argumentos passados

	int i;
	int flag;
	int acheiSilent =0;

	flag = 0;

	// Imprime Argumentos
	for(i = 0; i < argc; i++) {
		printf("argv[%i] = %s\n",i,argv[i]);
	}

	// verifica se o usuario passou um argumento desejado
	// o argumento desejado é "FAC", se em alguns dos argumentos contiver a palavra FAC
	// imprimir uma mensagem na tela
	for(i = 0; i < argc; i++) {
		if(strstr(argv[i],"FAC"))
			printf("Encontrei a palavra FAC na posicao %i dos parametros\n",i);
	}

	// Abaixo  1 exemplo como no ATPS, aonde a comparação é otimizada
	for(i = 0; i < argc; i++) {
		flag = flag || (strstr(argv[i],"-c"));
		acheiSilent = acheiSilent || (strstr(argv[i],"-s"));
		acheiSilent = acheiSilent || (strstr(argv[i],"-silent"));
	}

	if(flag) {
		printf("achei um parametro -c\n");
	}

	if(acheiSilent) {
	    printf("achei um parametro silenciador (-s ou -silent)");
	}
	getch();
	return 0;
}

exemplo.c // bibliotecas

#include <stdio.h>
#include "imprime.h"
// criando bibliotecas
// Arquivo principal
// Os outros arquivos estao no mesmo diretorio

int main (int argc, char const *argv[])
{
	imprime("Ola mundo");
	getch();
	return 0;
}

imprime.h

#include "imprime.c"
void imprime(char *mensagem);  // assinatura da funcao

imprime.c

#include <stdio.h>

void imprime(char *mensagem) {
	printf("%s", mensagem); // corpo da funcao
}