Есть ли быстрый способ подсчитать количество последовательных нулевых байтов, начиная с определенного указателя (char *) в C? В настоящее время я использую жесткий цикл, который работает хорошо и достаточно быстро, но строковые функции libc/gcc имеют тенденцию быть еще быстрее.Как считать последовательные нулевые ( 0) байты в C?
Я ищу что-то похожее на strspn
, buf strspn (конечно) останавливается в первом нулевом байте и поэтому бесполезно для этой задачи. Я думаю, вы могли бы также сказать, что я ищу обратный номер strlen
, который возвращает количество байтов, которые не null.
Если байт NUL не является концом строки, откуда вы знаете, где заканчивается строка? – delnan
Когда это достаточно быстро ... почему бэттер ?! – Anthales
В реализации библиотеки C имеется, вероятно, рукописный ассемблер. Вы можете перейти к ближайшему выровненному указателю и начать сравнивать целые значения. –