Я написал код, который сначала подсчитывает все строки файла, затем я хочу, чтобы он перепроверил строки на наличие фильтров слов и извлек из них информацию.Если у меня есть обе функции одновременно, первая функция (считая строки) блокирует вторую (фильтруя содержимое).
Обе функции работают (считая все строки и распечатывая 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.