2015-02-27 2 views
0

Я пишу этот код, чтобы отправить список файлов содержимого в папку с сервера, чтобы увидеть его на клиенте. Код работает, но я вижу все файлы без новой строки. Как я могу видеть файлы с новой строкой или пробелом? К примеру, сейчас я вижу: "file1.txtfile2.txtfile3.txt" и я хотел бы видеть "file1.txt file2.txt file3.txt"Как вставить новую строку в recv в C

Спасибо!

DIR *dp;   
int rv, stop_received;  
struct dirent *ep;   

dp = opendir ("./"); 
char *newline="\n"; 
if (dp != NULL) { 
    while (ep = readdir(dp))      
     rv = send(conn_fd, ep->d_name, strlen(ep->d_name), 0);    

    (void)closedir(dp); 
} else 
    perror ("Couldn't open the directory");   
close(conn_fd); 

ответ

1

Easy, объявить строку как этот

char newline = '\n'; 

и отправить его

rv = send(conn_fd, &newline, 1, 0); 

Так что если вы хотите отправить имя каталога и символ новой строки после него, сделать это таким образом

char newline; 

newline = '\n'; 
while (ep = readdir(dp)) 
{ 
    size_t length; 

    length = strlen(ep->d_name); 
    rv  = send(conn_fd, ep->d_name, length, 0); 
    if (rv != length) 
     pleaseDoSomething_ThereWasAProblem(); 
    rv = send(conn_fd, &newline, 1, 0); 
    /* ... continue here ... */ 
} 
+2

Возможно, вам понравится рассказать парню, когда/где Отправь это? – alk

+0

И, возможно, лучше рекомендовать отправить CR/LF ('' \ r \ n "), который более или менее является стандартом для сетевых приложений. – alk

+0

Не работает. Для компилятора ошибка равна «size_t length;» в то время. – Heisenberg