Я использую C. В этом примере предположим, что char buf всегда заканчивается на «,» (который у меня нет контроля), и мы всегда хотим усечь последние два символа (например, удалить «,») , Также предположим, что он не будет превышать 128 символов. Является ли приведенный ниже код безопасным (с этими предположениями)?C - Этот укороченный массив символов безопасен?
char buf[128];
sprintf(buf, "Item One, Item Two, Item Three, Item Four, ");
int len = strlen(buf);
if (len > 2)
{
// We know it's greater than 2, lop off the last two characters
buf[len - 2] = '\0';
}
Если это не безопасно, что это лучший способ укоротить последние несколько символов, оканчивающихся нулем массив символов?
Это довольно распространенная техника. Многобайтовые наборы символов могут сделать его небезопасным, но тогда вы не будете использовать 'strlen()'. – Sneftel
Хорошая точка. В этом случае он не будет использовать Unicode. –
Предложите 'size_t len', а не' int len'. Это тип, возвращаемый 'strlen()'. – chux