Подсчет количества строк программы, затем работа с ними, не работающими вместе - PullRequest
0 голосов
/ 01 мая 2019

Я написал код, который сначала подсчитывает все строки файла, затем я хочу, чтобы он перепроверил строки на наличие фильтров слов и извлек из них информацию.Если у меня есть обе функции одновременно, первая функция (считая строки) блокирует вторую (фильтруя содержимое).

Обе функции работают (считая все строки и распечатывая IP / порт), но только если один из них будет удален.

Я думаю, что второе время, которое запускает фильтрацию, хочет начать внизу файла и ничего не находит и просто останавливается.

char getIP(const char source[300], char result[300])
{
    int cnt;
    const char *readIn;
    readIn = strstr(source, "172");

    for(cnt = 0; readIn[cnt] != ':'; cnt++)
        result[cnt] = readIn[cnt];
    result[cnt] = '\0';
    return 0;
}

char getPort(const char source[300], char result[300])
{
    int cnt;
    const char *readIn;
    readIn = strchr(source, ':');

    for(cnt = 0; readIn[cnt] != ' '; cnt++)
        result[cnt] = readIn[cnt];
    result[cnt] = '\0';
    return 0;
}

int main()
{
    FILE *file;
    file = fopen("Netstat.txt", "r+");
    if(file == NULL)
    {
        perror("Netstat.txt");
        return 1;
    }
    char row[300], IP[30], Port[10];
    char *temp;
    int row_cnt = 0, readytostart = 0, cnt;
    while(fgets(row, 300, file) != NULL)
        row_cnt++;
    printf("Number of Rows: %d\n", row_cnt);

    while(fgets(row, 300, file) != NULL)
    {
        temp = row;
        if(temp[0] == '#' && temp[1] == '#' && temp[2] == '#')
            readytostart = 1;
        if(readytostart > 0)
        {
            if(strstr(row, "HERGESTELLT") != NULL && strstr(row, "127.0.0.1") == NULL)
            {
              getIP(row, IP); getPort(row, Port);
              printf("IP Adresse: %s  Port: %s\n", IP, Port);
            }
        }
    }
    fclose(file);
    return 0;
}

Я хочу, чтобы мой код сначала подсчитал все строки, поэтому в конце я получаю число, а затем снова просматриваю все строки со словом «HERGESTELLT», но не с IP-адресом 127.0.0.1.В этом случае IP-адрес и порт следует скопировать в новые массивы, а затем распечатать с помощью printf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...