У меня есть этот путь: ./demodir/a1/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1дополнительные байты в распределении таНоса
Когда я выделить пространство для имени пути в строке, используя только один (1) дополнительные байты (для «\ 0 ') строка печатается по-разному.
path = (char *) malloc(strlen(dirname) + strlen(direntp->d_name) + 1);
Печать: ./demodir/a1!/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1
.... это вопрос
Мне нужно все "+2" байт для распределения памяти, кроме того, длина содержимого. Почему?
Во-первых, код, который вы отправили, не «печатает» что-либо, поэтому как можно «распечатать» то, что вы опубликовали, не ясно. Во-вторых, я не вижу никакого кода, который бы инициализировал выделенную память. Где это? – AnT
Откуда появляется 'dirname'? Вход в консоль? Этот странный символ '' '' предполагает более чем длину строки. Это значение EOF как персонажа? –
Хмммм ... Какая кодировка - это ваш путь? Вы уверены, что там нет широкого UTF8? – oysteijo