Интересно, есть ли способ инициализировать строковый массив значением, которое я выбрал при распределении памяти, чтобы он не содержал мусора, и нулевой символ будет помещен в правильное место. Я знаю, что при использовании calloc выделенная память инициализируется для всех нулей, но в этом случае с использованием строк это не помогает.
Я практикую использование указателей и выделения памяти в C. Есть упражнение, в котором я написалфункция для копирования строки в другую строку. В main () я выделяю память с помощью malloc для обеих строк на основе длины строк, которую предоставляет пользователь, а затем пользователь вводит первую строку. На этом этапе я посылаю указатель первой строки и второй строки (неинициализированный) в качестве параметров в strCopy (char * str1, char * str2). Внутри этой функции я также использую другую основную функцию, которую я написал, чтобы вычислить длину строки. но, как вы можете догадаться, поскольку вторая строка заполнена мусором, вычисление ее длины внутри функции запутано.
void strCopy(char* str1, char* str2)
{
int str1len = str_len(str1); // basic length calculating function
int str2len = str_len(str2);
int i;
for (i = 0; i < str2len; i++)
{
str2[i] = str1[i];
}
str2[i] = '\0';
if (str2len < str1len)
printf("There wasn't enought space to copy the entire string. %s was
copied.\n", str2);
else
printf("The string %s has been copied.\n", str2);
}
В данный момент все работает нормально при инициализации str2 в цикле в main (),но меня интересуют другие возможные решения.
Большое спасибо за любую помощь!