Nếu bạn đang rằng được nhấn để đạt hiệu quả, bạn có thể khuyến khích bạn viết và gỡ lỗi cho chính mình.
Nhưng: chỉ cần làm điều đó với một bản sao; bạn có thể có giới hạn trên cho chuỗi dài bao nhiêu (một số thập phân phù hợp trong một số long
có giới hạn trên nghiêm ngặt về chiều dài tối đa của nó), vì vậy bạn có thể có bộ đệm tĩnh. Sau đó, hồ sơ toàn bộ ứng dụng của bạn và xem liệu việc sao chép/chuyển đổi có thực sự là một nút cổ chai hay không. Nếu nó thực sự là, sau đó bạn biết bạn cần phải viết của riêng bạn.
Dưới đây là một thô (chưa được kiểm tra, trình duyệt bằng văn bản) khởi điểm:
long limited_strtol(const char *string, size_t len)
{
long sign = 1;
long value = 0;
for(; len > 0 && *string == '-'; string++, len--)
sign *= -1;
for(; len > 0 && isdigit(*string); string++, len--)
{
value *= 10;
value += *string - '0';
len--;
string++;
}
return sign * value;
}