0

我编写了 ac 程序,它以混杂模式从以太网捕获数据包并将它们写入 .csv 文件。

如下:

在此处输入图像描述

但我希望我的 csv 文件如下:

在此处输入图像描述

我该怎么做?写入 csv 文件的代码是:

int main()
{
/* declarations*/  
logfile=fopen(filename,"w+");
/*related stuffs*/
}
void print_udp_packet(unsigned char *Buffer , int Size)
{     
/*ip header length related codes*/     

  char str[] = "UDP";   
  fprintf(logfile , "Type:%s,SA:%d,DA:%d,UDP Length:%d,UDP Checksum:%d\n"  
  ,str,ntohs(udph->source),ntohs(udph->dest),ntohs(udph->len),ntohs(udph->check));

}

我已经使用\nand,用于下一行和下一列,但我不能像上面的输出那样做?

[在答案中提到的编辑后]

在此处输入图像描述

4

2 回答 2

1

除非我遗漏了什么,否则只需调整您的 fprintf 语句以不包含列名。然后是生成表头的初始日志记录行。

int main()
{

    /* declarations*/  

    logfile=fopen(filename,"w+");
    if (logfile != NULL)
    {
         fprintf(logfile, "Type,SA,DA,UDP Length,UDP Checksum\n");
    }

    /*related stuffs*/
}

void print_udp_packet(unsigned char *Buffer , int Size)
{     
  /*ip header length related codes*/     


  fprintf(logfile , "%s,%d,%d,%d,%d\n",
                     "UDP",
                     ntohs(udph->source),
                     ntohs(udph->dest),
                     ntohs(udph->len),
                     ntohs(udph->check));

}
于 2013-11-30T07:37:40.637 回答
0

我猜对了。这是:刚刚\nfprintf显示语句中删除

fprintf(logfile , "Type,Source Port,Destination Port,UDP Length,UDP Checksum"); 


fprintf(logfile , "\n%s,%d,%d,%d,%d\n","UDP",ntohs(udph->source),ntohs(udph-

>dest),ntohs(udph->len),ntohs(udph->check));
于 2013-11-30T10:18:23.223 回答