Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2008, 22:42   #1
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
По умолчанию Объясните, как работает функция strlen()

Ни как не могу понять, как работает функция strlen(). Может, кто ни будь объяснить, что она делает?
Вот пример программы (взятый с учебника):
Код:
#include "iostream"
#include "string.h"

int main()
{
	char st[16];
	long int dec;
	int i,v;
	dec=0;
	v=1;
	printf("Введите восьмиразрядное двоичное число: ");
	scanf("%s",&st);
	for(i=strlen(st)-1;i>=0;i--)
	{
		if(st[i]=='1')
			dec+=v;
		v*=2;
	}
	printf("Двоичному числу %s соответствует десятичное %d\n",st,dec);
	system("pause");
}
Точнее меня интересуют, какое теперь тут будет число i=strlen(st)-1 и от куда оно взялось?
TheWanderer вне форума Ответить с цитированием
Старый 22.11.2008, 22:55   #2
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2TheWanderer может мсдн для этого смотреть надо? стрлен возвращает длину строки
vvviperrr вне форума Ответить с цитированием
Старый 23.11.2008, 03:47   #3
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
По умолчанию

Спасибо за объяснение.
TheWanderer вне форума Ответить с цитированием
Старый 23.11.2008, 13:55   #4
como
Форумчанин
 
Регистрация: 26.07.2008
Сообщений: 116
По умолчанию

2TheWanderer: каким компилятором компиляешь свою программу?
como вне форума Ответить с цитированием
Старый 23.11.2008, 14:02   #5
master1312
 
Аватар для master1312
 
Регистрация: 11.11.2008
Сообщений: 7
По умолчанию

кажеца в scanf надо st, а не &st передавать?
Или меня глючит?
Я бы изменил этот мир... Но бог не даёт мне исходники...
master1312 вне форума Ответить с цитированием
Старый 24.11.2008, 00:31   #6
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от master1312 Посмотреть сообщение
кажеца в scanf надо st, а не &st передавать?
Или меня глючит?
Адрес надо передавать, все правильно
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 24.11.2008, 00:54   #7
StudentPolitech
Форумчанин
 
Аватар для StudentPolitech
 
Регистрация: 21.11.2008
Сообщений: 400
По умолчанию

strlen функция предназначенная для определения длины, например:
dlina=strlen(mas)
Здесь strlen считывает длину массива mas и помещает её в dlina, вообще с этой функцией удобно производить подсчёт массивов, а также других функций.
Винда, KIS 2010, книжка по С/С++, остальное неважно........
StudentPolitech вне форума Ответить с цитированием
Старый 24.11.2008, 03:35   #8
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
По умолчанию

Цитата:
Сообщение от como Посмотреть сообщение
2TheWanderer: каким компилятором компиляешь свою программу?
Microsoft Visual Studio 2008
TheWanderer вне форума Ответить с цитированием
Старый 25.11.2008, 20:49   #9
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
Адрес надо передавать, все правильно
st и есть адрес. Это массив char. Соотв. тип будет char*, просто память статически выделяется.
theos вне форума Ответить с цитированием
Старый 25.11.2008, 22:46   #10
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от theos Посмотреть сообщение
st и есть адрес. Это массив char. Соотв. тип будет char*, просто память статически выделяется.
Ага, точно, не обратил внимания что st - массив
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает функция keybd_event Hintman Win Api 31 05.06.2011 14:16
Функция Tregistry.keyexists не работает Ozerich Общие вопросы Delphi 5 18.09.2008 09:42
Не работает функция gets()!!! Ilya'91 Общие вопросы C/C++ 1 28.07.2008 23:16
Не работает функция floor в Java POPOV Помощь студентам 1 24.04.2008 14:08
не корректно работает функция "если" (+) zetrix Microsoft Office Excel 0 30.10.2006 19:19