2013-11-30 2 views
0

Я написал программу c, которая захватывает пакеты из Ethernet в беспорядочном режиме и записывает их в CSV-файл.Как создать другую строку в листе excel в C

Это выглядит следующим образом:

enter image description here

Но я хочу, чтобы мой файл CSV следующим образом:

enter image description here

Как я могу это сделать? Код для записи в файл 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 и , для следующей строки и столбца, но я не в состоянии сделать как выше выход?

[после редактирования, как указано в ответе]

enter image description here

+0

Самый простой способ? Довольно многое, что вы, похоже, делаете в любом случае: просто напишите текстовый файл .csv. Легко создавать, легко редактировать ... и легко импортировать в Libre-Office или Excel. IMHO ... – paulsm4

ответ

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)); 

} 
+0

спасибо lott sir :) – Beginner

+0

сэр, я использовал ваш метод, но его отображение столбцов дважды! Я загрузил его. как я могу удалить эти столбцы? – Beginner

+0

Возможно, вы перепечатываете заголовок с каждой строкой данных. – selbie

0

Я понял, это правильно. Вот он: просто удаляется \n из заявления fprintf дисплея

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));