Удаление строк C++

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by fire64, 7 Jul 2010.

  1. fire64

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

    Joined:
    1 Apr 2008
    Messages:
    251
    Likes Received:
    22
    Reputations:
    5
    Здравствуйте.
    Я написал код для удаления строк из HOST файла, однако код как-то криво работает, не могли бы вы посмотреть в чем причина

    PHP:
    int RemoveTextchar *fultextchar *obrez )
    {
        
    char *found strstrfultextobrez );

        if( !
    found )
        {
            return 
    0;
        }

        
    char relfound[10240];
        
    memsetrelfound0sizeof(relfound) );
        
    sprintfrelfound"%s"found );

        
    char *end relfound strlen(obrez);

        if( !
    end )
        {
            return 
    0;
        }

        
    char relend[10240];
        
    memsetrelend0sizeof(relend) );
        
    sprintfrelend"%s"end );

        
    int firstlen strlenfultext ) - strlenrelfound );

        
    char relfirstpart[10240];
        
    memsetrelfirstpart0sizeof(relfirstpart) );
        
    strncpy (relfirstpartfultext,firstlen);

        
    char relfinal[10240];
        
    memsetrelfinal0sizeof(relfinal) );
        
    sprintfrelfinal"%s%s"relfirstpartrelend );

        
    memsetfultext0strlen(fultext) );    
        
    memcpyfultextrelfinalstrlen(relfinal) - );
        
        return 
    1;
    }

    PHP:
    int DeketeLocalHostchar *domain )
    {
        
    char *windir getenv ("SystemRoot");

        
    char hostfile[1024];
        
    memsethostfile0sizeof(hostfile) );
        
    sprintfhostfile"%s\\system32\\drivers\\etc\\hosts"windir );

        
    FILE *rfp fopenhostfile"rb" );

        if( !
    rfp )
        {
            
    printf"Can't open file %s\n"hostfile );

            return 
    0;
        }

        
    fseekrfp0SEEK_END );
        
        
    int len ftellrfp );
        
    rewindrfp );

        
    char *pHostBase = ( char * )malloclen );
        
    freadpHostBase1lenrfp );

        
    char relHostBase[102400];
        
    memsetrelHostBase0sizeof(relHostBase) );
        
    sprintfrelHostBase"%s"pHostBase );

        
    fcloserfp );

        
    FILE *wfp fopenhostfile"wp" );

        if( !
    wfp )
        {
            
    printf"Can't open file %s\n"hostfile );

            return 
    0;
        }

        
    char remstring[1024];
        
    memsetremstring0sizeof(remstring) );
        
    sprintfremstring"\n127.0.0.1       %s"domain );

        
    RemoveTextrelHostBaseremstring );

        
    fwrite (relHostBase strlen(relHostBase) , wfp );

    //    fprintf( wfp, "%s", relHostBase );

        
    fclose(wfp );

        return 
    1;
    }
     
  2. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Не проще использовать fgets/fputs для этого?
     
  3. b0r2

    b0r2 Member

    Joined:
    29 Jun 2010
    Messages:
    30
    Likes Received:
    5
    Reputations:
    0
    Code:
    FILE *rfp = fopen( hostfile, "rb" );
    Почему текстовой файл открываешь как бинарный, ты когда нибудь видел чтобы в host файле были какие нибудь бинарные коды ? :)


    Code:
    FILE *wfp = fopen( hostfile, [U]"wp" [/U]);
    Что значит wp ? :D


    Code:
    char relfirstpart[10240];
    char relHostBase[102400]; 
    
    Боже ! Какие же у нас масштабы :D, ты что,собираешься туда скопировать целый роман "Хитроумный идальго Дон Кихот Ламанчский" ?
     
    1 person likes this.
  4. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    с запасом )))
    а когда тестиш так и надо потом уже когда работает делаеш по нормальному не будеш же для проверки каждой идеи создавать динамическую систему чтоб потом все поломать так как идея не понравилась в работе

    p.s сам так пишу не вижу ничего плохого если идея понравилась переписываю нормально
     
  5. b0r2

    b0r2 Member

    Joined:
    29 Jun 2010
    Messages:
    30
    Likes Received:
    5
    Reputations:
    0
    Зато я вижу,во первых это плохая привычка, во вторых никто не может гарантировать что после тестировании ты все настроишь так как должно быть.

    ..а эти memset-ы это вообще ужас блин, если он работает чисто с полями char нафиг не нужно каждый раз чистить buffer
    Лучше всего еще при создании чистить поля,например :
    Code:
    char str[32] = {0};
    или

    Code:
    char str[16][32] = { {0} };
     
  6. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    плохая привычка )))

    лучше промолчать чем такое говорить

    ждем аргументации ...
     
  7. b0r2

    b0r2 Member

    Joined:
    29 Jun 2010
    Messages:
    30
    Likes Received:
    5
    Reputations:
    0
    Если лучше промолчать,тогда молчи без лишнего оффтопа ;)

    Аргументацию хочешь ??
    Знаешь сколько весит файл hosts в дефолтом состоянии ? Около 700 Byte
    Знаешь сколько КилоБайт 102400 Байтов ? 100 !
    Так,какая тебе еще аргументация нужна ??
     
    #7 b0r2, 10 Jul 2010
    Last edited: 10 Jul 2010
  8. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    вот что за человек говорит "плохая привычка" иму говориш
    аргументируй он начинает говорить про "файл" или действительно
    не понимает сути вопроса или школьник которому нечего сказать ...