Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. Olá Pessoal,


    Estou fazendo um programinha em C que precisa verificar determinadas linhas dentro de um arquivo texto. Ele deve ir em uma linha pré estabelecida e procurar por uma certa string. Se a string estiver lá ele deve passar para a próxima linha pré estabelecida (que não é a seguinte) e verificar a existência da string até não encontrar mais. Pensei em fazer isso dentro de um for, estou com problemas para ler o arquivo (não sei C de forma eficiente). Alguem pode me ajudar com essa função ?

    Valew e t+

  2. Código :
    #define     FILENAME_MAXLEN     255
    #define     ERROR_MAXLEN        1000
    #define     LOGLINE_MAXLEN      4096
    #define     MAIL_MAXLEN         4096
     
    int main(void)
    {
        FILE *fdlog;
        char *ptraux;
        char *filters[] = { "filtro 1", "filtro 2" };
        char logfile[FILENAME_MAXLEN], logline[LOGLINE_MAXLEN];
        char temp[MAIL_MAXLEN][6+1];
        int  errn;
        int x = 0, y = 0;
     
        memset(logfile,  0, sizeof(logfile));
        GetLastLogFile(logfile);                                // pegando o nome do ultimo log
     
        for (errn=0; errn<2; errn++)                            // loop para executar todos filtros
        {
            // zerando as matrizes
            memset(logline,  0, sizeof(logline));
            memset(temp,     0, sizeof(temp));
     
            fprintf(stdout, "(VERIFICANDO) %s\n", filters[errn]);
            if ((fdlog = fopen(logfile, "r")) == 0)             // abrindo ultimo arquivo de log
            {
                fprintf(stdout, "(ERRO ACESSO) %s\n", logfile);
                return -1;
            }
            fprintf(stdout, "(LENDO) %s\n", logfile);
     
            while (!feof(fdlog))                                // enquanto nao chegar ao fim do arquivo
            {
                fgets(logline, LOGLINE_MAXLEN, fdlog);          // le uma linha por vez
                if (ptraux = strstr(logline, filters[errn]))    // aplica os filtros definidos
                {
                    if (ptraux = strstr(ptraux, "Estab."))      // filtra somente o codigo do estabelecimento
                    {
                        strncpy(temp[x++], ptraux+7, 6);        // acrescenta ao buffer
                    }
                }
            }
            fclose(fdlog);                                      // fechando arquivo de log
            fprintf(stdout, "(FECHANDO) %s\n", logfile);
        }
     
        return 0;
    }

    Editei um que eu tinha feito aqui, só deixei o que é util para você... a funçao GetLastLogFile salva o nome de um arquivo no parametro (logfile neste caso), nao coloquei a funcao aqui pois era grande demais.
    Voce pode dar um strncpy(logfile, "seu-arquivo.log", sizeof(logfile)-1) para utilizar..
    Tirei os includes das bibliotecas porque nao gosto de dar as coisas prontas..
    Qualquer coisa posta aí denovo. Abraços



  3. tu pode percorrer o arquivo da seguinte maneira:
    usa a função feof();

    assim:

    FILE *fp;
    fp=fopen("arquivo","r");/* "r" para leitura */
    while(!feof(fp)) {
    /*isso faz com q ele percorra o arquivo ateh o final*/
    }

    dai tu vai pegando a cada volta do while os caracteres e verifica se o caractere eh "\n", se for, incrementa o contador de linhas. assim tu poderá chegar ae a linha desejada.
    qqer dúvida, posta aí de novo.

  4. Pode utilizar a função ftell() para guardar uma posição dentro do arquivo, e fseek() para voltar para aquela posição, pro início ou para o fim..



  5. Citação Postado originalmente por stumm
    FILE *fp;
    fp=fopen("arquivo","r");/* "r" para leitura */
    while(!feof(fp)) {
    /*isso faz com q ele percorra o arquivo ateh o final*/
    }
    na verdade ele soh vai percorrer o arquivo se usar alguma funcao tipo fgetc fgets etc, pq o feof soh checa se eh fim de arquivo, ele nao meche com o ponteiro do arquivo






Tópicos Similares

  1. duvidas em servidores
    Por dboom no fórum Servidores de Rede
    Respostas: 0
    Último Post: 30-04-2003, 13:49
  2. duvida em CGI
    Por dboom no fórum Linguagens de Programação
    Respostas: 0
    Último Post: 22-04-2003, 23:34
  3. Duvida em relacao a Functions em C *nix
    Por no fórum Linguagens de Programação
    Respostas: 0
    Último Post: 27-03-2003, 20:19
  4. dúvida em x no notebook
    Por mondragon no fórum Servidores de Rede
    Respostas: 1
    Último Post: 10-02-2003, 23:40
  5. Dúvida em IPTABLES...
    Por soyeu no fórum Servidores de Rede
    Respostas: 2
    Último Post: 28-11-2002, 14:41

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L