terça-feira, 31 de maio de 2011

Trabalhando com Arquivos - Contador de Letras

Olá pessoal,

hoje vamos tentar desenvolver um contador de letras. É bem simples, o programa irá contar quantas ocorrências de determinada letra, dentro de um arquivo, teremos.

Para isso, dentro da mesma pasta do executável coloque um arquivo, dentro dele, coloque algumas palavras. Vamos a um pequeno exemplo:


root@debian:/home/eduardo/Documents/programas/FilesV0/bin/Debug# vi arq

dentro do arquivo colocamos:
Teste do programa

Vamos executar:
root@debian:/home/eduardo/Documents/programas/FilesV0/bin/Debug# ./FilesV0 arq p

onde:
./FilesV0 é o nome do progama
arq é o nome do arquivo
p é a letra que desejamos procurar

Resultado:

Numero de ocorrencias da letra p e 1

Veja o código abaixo:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char * argv[])
{
    FILE * arquivo;
    int letra;
    int nOcorrencias = 0;
    if(argc != 3)
    {
        printf("\n\tErro, voce deve informar o arquivo e a letra a ser procurada!!!!\n");
        return 0;
    }

    else
    {

        arquivo = fopen(argv[1],"r");
        if (arquivo == NULL)
        {
            printf("\n\tProblemas ao abrir o arquivo, certifique-se que o mesmo existe\n");
            return 0;
        }
        else
        {
            letra = fgetc(arquivo);
            while (letra != EOF)
            {
                if (strcmp(argv[2], (char *)&letra) == 0)
                    nOcorrencias++;
                letra = fgetc(arquivo);
            }
            printf("\n\tNumero de ocorrencias da letra %s e %d\n", argv[2], nOcorrencias);
        }
        fclose(arquivo);
    }

    return 0;
}





segunda-feira, 30 de maio de 2011

Instalando o CodeBlocks no Debian

Passos para instalar o codeblocks no debian ( 2.6.32-5-amd64)

Vamos fazer download manualmente do arquivo

Para descompactar:
tar -jxvf codeblocks-10.05-1-debian-dbg-amd64.tar.bz2 

Para instalar todos os pacotes .deb usamos o comando
dpkg -i *.deb

Depois rodamos o comando
apt-get -f install

Assim resolvemos qualquer dependência

sábado, 21 de maio de 2011

Usando o passwd para autenticar seus programas

Olá pessoal,

Muitas vezes nossas aplicações necessitam fazer autenticação de usuários, e ao invés de criarmos nossa base, dependendo da necessidade, podemos utilizar a base de usuários do sistema, é o que vamos fazer!!!


Dados do sistema:
FreeBSD 8.2 RELEASED

Como compilar o código abaixo:

gcc -lcrypt verificaSenha.c -o TesteDeLogin



#include <unistd.h>
#include <stdio.h>
#include <pwd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <errno.h>
void LeUserSenha(char * user, char * senha)
{
        
        printf("\nUsuario:");
        scanf("%s",user);
        strncpy(senha,getpass("\nSenha:"),49);
        
}

int auten(char * user, char * senha)
{
        struct passwd * pw;
        pw = getpwnam(user);
        if(pw == NULL)
        {
                return 0; //não encontrou usuario
        }
        else
        {
                if(strcmp(crypt(senha,pw->pw_passwd),pw->pw_passwd)==0)
                        return 1; //encontrou usuario
                else
                        return -1; //a senha não confere
        }
}
//programa de teste
int main()
{
        char  senha[50];
        char  usuario[50];
        int resultAut;


        LeUserSenha(usuario, senha);
        resultAut =auten(usuario,senha);
        if(resultAut==1)
                printf("\n\tPermitido acesso: %d\n",resultAut);
        else
                printf("\n\tAcesso Negado:%d\n",resultAut); 
        return 1; 

}

É isso pessoal