распределения номеров ICQ

Discussion in 'Песочница' started by andreipup, 20 Aug 2010.

  1. andreipup

    andreipup Elder - Старейшина

    Joined:
    21 Aug 2007
    Messages:
    265
    Likes Received:
    21
    Reputations:
    0
    Ищу порогу что бы распределяла номера.
    У меня есть база 9*

    134265636
    234645645
    345454534
    443523345
    532353455
    621341234

    нужно что бы после обработки уины записывались в отдельный файл

    Которые начинаются с 1 в первый файл
    Которые начинаются с 2 в второй файл
    Которые начинаются с 3 в третий файл
    Которые начинаются с 4 в четвертый файл
    Которые начинаются с 5 в пятый файл
    Которые начинаются с 6 в шестой файл

    Кто что подскажет?
     
  2. ZdezBilYa

    ZdezBilYa Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
  3. andreipup

    andreipup Elder - Старейшина

    Joined:
    21 Aug 2007
    Messages:
    265
    Likes Received:
    21
    Reputations:
    0

    Excel не потянула 3 700 000 строк(
    Кто нибудь порогу подскажет?
     
    #3 andreipup, 20 Aug 2010
    Last edited: 20 Aug 2010
  4. alkos

    alkos Elder - Старейшина

    Joined:
    28 Mar 2007
    Messages:
    1,148
    Likes Received:
    292
    Reputations:
    271
    Школьных знаний программирования мне хватило, чтобы за 2 минуты написать на СИ сепаратор:

    Исходник:
    Code:
    #include <conio.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
    #include <string.h>
    
    
    int read (FILE* source)
    {
        char word[1024]="", str[1024];
    	if (!fgets(str, 1023, source)) return 0;
    
        if (str[0]=='1')
    	{
        FILE* file = fopen ("1.txt", "a");
        fputs (str, file);
        fclose (file);
    	}
    	if (str[0]=='2')
    	{
        FILE* file = fopen ("2.txt", "a");
        fputs (str, file);
        fclose (file);
    	}
        if (str[0]=='3')
    	{
        FILE* file = fopen ("3.txt", "a");
        fputs (str, file);
        fclose (file);
    	}
    	if (str[0]=='4')
    	{
        FILE* file = fopen ("4.txt", "a");
        fputs (str, file);
        fclose (file);
    	}    
    	if (str[0]=='5')
    	{
        FILE* file = fopen ("5.txt", "a");
        fputs (str, file);
        fclose (file);
    	}    
    	if (str[0]=='6')
    	{
        FILE* file = fopen ("6.txt", "a");
        fputs (str, file);
        fclose (file);
    	}    
    	return 1;
    }
    
    void main()
    {
        FILE* source = fopen ("source.txt", "r");
    	while (read (source));
    	fclose (source);
    }
    
    Файл расфасовывает данные из файла source.txt в 1.txt, 2.txt, 3.txt, 4.txt, 5.txt, 6.txt. Разумеется все файлы должны быть в одной папке. Скачать
     
    2 people like this.
  5. andreipup

    andreipup Elder - Старейшина

    Joined:
    21 Aug 2007
    Messages:
    265
    Likes Received:
    21
    Reputations:
    0
    спасибо alkos все закинул в одну папку обозвал файл source запустил твою порогу но не хрена не происходит(
     
  6. alkos

    alkos Elder - Старейшина

    Joined:
    28 Mar 2007
    Messages:
    1,148
    Likes Received:
    292
    Reputations:
    271
    Только что затестил у себя, всё норм работает. В сурс-файле перед уинами никаких символов или пробелов не стоит?
     
    1 person likes this.
  7. andreipup

    andreipup Elder - Старейшина

    Joined:
    21 Aug 2007
    Messages:
    265
    Likes Received:
    21
    Reputations:
    0

    нет нестоит.
    Как я понял она просто очень долго будет обрабатывать 3 700 000 номеров я подождал 10 мин обработались с 1 и то не все(
     
  8. diamantov

    diamantov Member

    Joined:
    7 Oct 2009
    Messages:
    37
    Likes Received:
    9
    Reputations:
    -1
    а icq safebook?
     
  9. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    вот вариант на ЦЭбезплюсов:
    PHP:
    #include <stdio.h>
    int main()
    {
        
    char     buf[256]={0};
        
    FILE     *f_in fopen("in.txt""r"),
                *
    f_out[10];

        for(
    buf[0] = 48buf[0] < 58; ++buf[0])
            
    f_out[buf[0] - 48] = fopen(buf"a");

        while(
    fgets(buf255f_in))
            
    fputs (buff_out[buf[0] - 48]);

        for(
    buf[0] = 0buf[0] < 10; ++buf[0])
            
    fclose(f_out[buf[0]]);

        return 
    0;
    }
    за 10 секунд 16млн строк.



    upd:
    для тех, кто не умеет пользоваться компилятором - proga.exe
     
    #9 M_script, 20 Aug 2010
    Last edited: 20 Aug 2010
    3 people like this.
  10. andreipup

    andreipup Elder - Старейшина

    Joined:
    21 Aug 2007
    Messages:
    265
    Likes Received:
    21
    Reputations:
    0

    Вот это действительно круто)Давно это искал!!!
    Тока почему то файл не txt получается как это поправить?
     
  11. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Так и было задумано.
    Если нужны файлы txt, создай в папке с программой файл "proga.bat", в нем напиши:
    PHP:
    proga.exe
    ren 
    *. *.txt
    и запускай его
     
  12. andreipup

    andreipup Elder - Старейшина

    Joined:
    21 Aug 2007
    Messages:
    265
    Likes Received:
    21
    Reputations:
    0


    Крутяк)Работает шустро)
    Спасибо тебе большое!!!!
     
    #12 andreipup, 20 Aug 2010
    Last edited: 20 Aug 2010