The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"c - read()"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"c - read()"  +/
Сообщение от kosh (??) on 05-Ноя-09, 15:54 
Возник вопрос правильно ли такое
    char str[50]
    while ( (n = read(sockfd, str, 49)) > 0)
          {
             str[n]='\0';
             printf("%s",str);
          }

или лучше так

    char str[5]
    while ( (n = read(sockfd, str, 1)) > 0)
          {
             str[n]='\0';
             printf("%с",str[0]);
            
          }

))) или все равно и так и так

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

  • c - read(), shadow_user, 16:32 , 05-Ноя-09, (1)  
  • c - read(), angra, 17:21 , 05-Ноя-09, (2)  
    • c - read(), Andrey Mitrofanov, 17:31 , 05-Ноя-09, (3)  
  • c - read(), аноним, 23:05 , 05-Ноя-09, (4)  
    • c - read(), angra, 00:26 , 06-Ноя-09, (5)  
      • c - read(), dyndns, 09:15 , 06-Ноя-09, (6)  
      • c - read(), аноним, 18:58 , 06-Ноя-09, (7)  
      • c - read(), Сергей, 03:33 , 07-Ноя-09, (8)  

Сообщения по теме [Сортировка по времени | RSS]


1. "c - read()"  +/
Сообщение от shadow_user on 05-Ноя-09, 16:32 
Разницы вроде как нет, а вот во втором случае для каждого символа делается системный вызов, соответственно скорость выполнения понижается.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "c - read()"  +/
Сообщение от angra (ok) on 05-Ноя-09, 17:21 
И так и так не оптимально :)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "c - read()"  +/
Сообщение от Andrey Mitrofanov on 05-Ноя-09, 17:31 
>И так и так не оптимально :)

И неправильно, потому что NUL-и во входном потоке "всё портят".

...и нет, в "постановке" задачи не говорилось, что входжные данные такие или эдакие.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "c - read()"  +/
Сообщение от аноним on 05-Ноя-09, 23:05 
Во втором случае не понятно, зачем вообще массив и '\0'. Кроме того, будет работать крайне неэффективно.

Первый правильный, за исключением того, что если в потоке будут нули, куски строк не будут выведены.

Лучше так:

char str[50]
while ((n = read(sockfd, str, 50)) > 0)
    write(STDOUT_FILENO, str, n);

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "c - read()"  +/
Сообщение от angra (ok) on 06-Ноя-09, 00:26 
Если не знаете, то и не советуйте
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "c - read()"  +/
Сообщение от dyndns on 06-Ноя-09, 09:15 
>Если не знаете, то и не советуйте

А как тогда было бы оптимально? , понятное дело что там где по байтно конец строки не нужен

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "c - read()"  +/
Сообщение от аноним on 06-Ноя-09, 18:58 
>Если не знаете, то и не советуйте

Либо сразу показывай как правильно, либо не высовывайся. Твои "познания" меня уже неоднократно умиляли.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "c - read()"  +/
Сообщение от Сергей (??) on 07-Ноя-09, 03:33 
>Если не знаете, то и не советуйте

Хм, и как-же, по-вашему, правильно?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру