我编写了一个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));
}