Кресты / Говнокод #1702 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
if (strlen(tmpStr) > 250) 
    strncpy(fields[i].info.fieldName, tmpStr, 250);
else 
    strcpy(fields[i].info.fieldName, tmpStr);

А пох - все равно скопируем. =)

Запостил: rockerzz rockerzz, (Updated )

Комментарии (8) RSS

  • Лолшто? Если больше 250, то скопируем только 250. Иначе --- всё.
    Ответить
    • man strncpy

      Функция strncpy работает подобным образом, но копируются только первые n байт строки src. Таким образом, если нулевой байт отсутствует в первых n байтах src, то результирующая строка не будет завершена символом `\0'.

      strncpy(fields[i].info.fieldName, tmpStr, 250); - этого вполне достаточно.
      Ответить
  • Хрен знает, надо заглядывать в код этих функций, но возможно это была забавная попытка оптимизации, заключающаяся в том, что strncpy на каждый цикл должен делать дополнительную проверку на 0 в отличие от strcpy, что делает её более медленной, а значит и менее желательной функцией.
    Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8