Написать функцию на Си, которая бы определяла длину вводимой строки - C (СИ)
Формулировка задачи:
Всем привет. Хотелось бы получить помощь, человеческую с объяснением. Суть вопроса - написать функцию на Си, которая бы определяла длину вводимой строки. Поискал, почитал, но так и не понял, может кто-нибудь помочь и написать такую функцию с объяснениями? Спасибо заранее.
Решение задачи: «Написать функцию на Си, которая бы определяла длину вводимой строки»
textual
Листинг программы
unsigned str_length (const char * const str)
{
short x = 1;
char * ptr = (char*) &x;
unsigned res = 0;
if (ptr[0] == 1)
res = strchr((char*)str, 0) - (char*)str;
else
res = (char*)str - strchr((char*)str, 0);
return res;
}
Объяснение кода листинга программы
- Входной параметр функции —
const char * const str, то есть указатель на строку символов, которая передается в функцию. - Внутри функции создаются две переменные:
xтипаshortиptrтипаchar *. - Переменная
ptrинициализируется адресом переменнойxс помощью оператораreinterpret_cast. - Переменная
resинициализируется значением 0. - Если первый символ в переменной
ptrравен 1, то переменнаяresинициализируется как разность между адресом первого символа строкиstrиptr. - Если первый символ в переменной
ptrне равен 1, то переменнаяresинициализируется как разность между адресом первого символа строкиstrиptr. - Функция возвращает значение переменной
res.