Advertisement
ipsBruno

(Pawn) ffind.inc

Dec 19th, 2012
379
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1. #if defined _ffind_included
  2.         #endinput
  3. #endif
  4.  
  5. #define _ffind_included
  6.  
  7.  
  8. //==============================================================================
  9. //
  10. //
  11. // Pesquisar em arquivos! Função ffind
  12. // Similar a "strfind" porém busca os dados em um arquivo!
  13. //
  14. // Uso:
  15. // fffind ( "nomedoarquivo.extensao", "stringparaprocurar");
  16. // A função retorna -1 caso a string não for encontrada, caso for encontrada retorna a posição!
  17. //
  18. // Existem outros parâmetros opcionais, tais como:
  19. // ignorecase:  Caso este estiver como "true", as diferenças de letras minusculas, maisculas serão ig noradas
  20. // pos: Caso este valor for maior que zero, a pesquisa só será feita a partir de tal posição de caractere no arquivo
  21. // USEUTF8: Caso este estiver ativado, a codificação do arquivo usada será com UTF8. Caso contrário, não.
  22. //
  23. //==============================================================================
  24.  
  25.  
  26.  
  27. #include <a_samp>
  28.  
  29.  
  30. #define fffind \
  31.                     ffindinternal
  32.  
  33.  
  34. stock ffindinternal(arquivo[], procura[], bool: ignorecase = false, pos = 0, bool: USEUTF8 = true)
  35. {
  36.  
  37.     static
  38.         File: gArquivo,
  39.         encontrado, c, i;
  40.  
  41.     gArquivo = fopen( arquivo, io_read );
  42.  
  43.     if(pos > 0)
  44.         fseek( gArquivo, pos, seek_current );
  45.  
  46.     if(ignorecase) {
  47.  
  48.         for( i = 0; procura[i]; ++i)
  49.         procura[i] = tolower(procura[i]);
  50.  
  51.         for ( i = 0, encontrado = 0 ; ( c = fgetchar( gArquivo, -1, USEUTF8 ) )  != -1; ++i )  {
  52.  
  53.             if( tolower(c)  == procura[encontrado]) {
  54.  
  55.                 encontrado++;
  56.  
  57.                 if(!procura[encontrado])
  58.                     return fclose(gArquivo), i - strlen(procura) + 1  + pos;
  59.             }
  60.  
  61.             else
  62.                 encontrado = 0;
  63.         }
  64.  
  65.     }
  66.  
  67.     else {
  68.  
  69.         for ( i = 0, encontrado = 0 ; ( c = fgetchar( gArquivo, -1, USEUTF8 ) )  != -1; ++i )  {
  70.  
  71.             if( (c) == procura[encontrado]) {
  72.  
  73.                 encontrado++;
  74.  
  75.                 if(!procura[encontrado])
  76.                     return fclose(gArquivo), i - strlen(procura) + 1;
  77.             }
  78.  
  79.             else
  80.                 encontrado = 0;
  81.         }
  82.  
  83.     }
  84.  
  85.  
  86.     return fclose(gArquivo), -1;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement