Я хочу создать функцию, которая создает новую строку с определенной длиной. Это код:Проблема с созданием строки C
char* newString(int lenght){
char* newstring =(char*)((calloc(lenght, sizeof(char))));
newstring[lenght] = '\0';
return newstring;
}
Я использую его таким образом:
char* string = newString(10);
Моя проблема заключается в том, что когда я делаю:
printf("String lenght %lu \n",strlen(string));
я получаю 0, но я не понять почему. Я неофит с С. Благодарим за Ваше время
Поскольку 'calloc' zero инициализирует ваш массив, вы никогда не заполняете его ничем. Кроме того, это написано «длина» –
... и вы превысите выделенную длину с помощью 't [lenght] = '\ 0'', тем самым вызывая неопределенное поведение. Массивы в C индексируются с нулевой базой. Значение '0 ... (lenght-1)' - допустимый диапазон индексов. – WhozCraig
't [length] = '\ 0';' - это не связанная запись. – Xaqq