c - read(), kosh, 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 - 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)
>И так и так не оптимально :) И неправильно, потому что NUL-и во входном потоке "всё портят". ...и нет, в "постановке" задачи не говорилось, что входжные данные такие или эдакие.
- c - read(), аноним, 23:05 , 05-Ноя-09 (4)
Во втором случае не понятно, зачем вообще массив и '\0'. Кроме того, будет работать крайне неэффективно.Первый правильный, за исключением того, что если в потоке будут нули, куски строк не будут выведены. Лучше так: char str[50] while ((n = read(sockfd, str, 50)) > 0) write(STDOUT_FILENO, str, n);
- 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)
>Если не знаете, то и не советуйте Хм, и как-же, по-вашему, правильно?
|