我编写了一个c程序,该程序以混杂模式捕获来自以太网的数据包,并将其写入.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));

}


我已经在下一行和列中使用了\n,,但是我不能像上面的输出那样做吗?

[按照答案中的说明进行编辑后]

最佳答案

除非我缺少任何内容,否则只需将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));

}

08-16 14:02