1. C++ / Говнокод #1702

    +49.2

    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, 27 Августа 2009

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

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

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

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

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