※ ChatGPTを利用し、要約された質問です(原文:このプログラムのアルゴリズムを教えていただけませんか?)
プログラムのアルゴリズムとIPアドレス抽出手順
このQ&Aのポイント
ファイルlog.txtの文章中からIPアドレスを抜き出し、ip.txtに書き込むプログラムのアルゴリズムと手順を教えてください。
具体的に、どのようにIPアドレスを検出しているのでしょうか。
プログラムの要点や処理の流れなどについても教えていただけると嬉しいです。
このプログラムのアルゴリズムを教えていただけませんか?
ファイルlog.txtの文章中からIPアドレスを抜き出し、ip.txtに書き込むというプログラムです。文章は 日付 http attempt from xxxx.xxxx.xxxx.xxxx:ポート番号とう具合に並んでいます。
/* ・・・ from IP:portなフォーマットが前提*/
より下でIPを検出しているとおもうのですが、具体的にどういう手順で検出しているのかわかりません。
どうか宜しくお願いします。
#include <stdio.h>
#include <string.h>
void
addLine(const char*,FILE*);
char*
getFromIP(const char*,char*);
int main()
{
FILE* pFileA = fopen("log.txt","rt");
char buff[256];
if(pFileA){
FILE* pFileB = fopen("ip.txt","wt");
if(pFileB){
for(;fgets(buff,256,pFileA) != NULL;){
char buff2[32] = {'\0'};
addLine(getFromIP(buff,buff2),pFileB);
}
fclose(pFileB);
}
fclose(pFileA);
}
return 0;
}
/* ・・・ from IP:portなフォーマットが前提*/
char*
getFromIP(const char* line,char* buff){
const size_t length = strlen(line);
size_t top,back = length-1,i,k;
for(back = length-1;line[back] != ':';--back);
for(i=0,top = back - 1;i<3;++i){
for(;line[top] != '.';--top);
}
for(;line[top-1] != ' ';--top);
for(i=top,k=0;i<back;buff[k++] = line[i++]);
return buff;
}
void
addLine(const char* str,FILE* pFile){
char buff[1024];
sprintf(buff,"%s\n",str);
fputs(buff,pFile);
}
お礼
分かりやすい説明だけでなく新しいプログラムも教えていただき本当にありがとうございました。