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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2010, 20:12   #1
kloffelin
Пользователь
 
Регистрация: 21.02.2010
Сообщений: 27
По умолчанию Функция получения длины строки в C#

Всем доброго времени суток!
У меня есть функция получения длины строки на С++:
Код:
int strlength(char s[])
			 {
					int	i=0;
					int len=0;
					while (s[i]!=NULL)
					{
						len++;
						i++;
					}
					return (len);
			 }
Хочу переписать ее на C#, но не могу составить условие цикла... Условия s[i]!=null и s[i]!='\0' не работают (цикл не останавливается дойдя до конца строки)
Подскажите как составить это условие. Заранее благодарен.
kloffelin вне форума Ответить с цитированием
Старый 26.10.2010, 20:34   #2
Xeonc
Форумчанин
 
Регистрация: 20.10.2010
Сообщений: 143
По умолчанию

В c#, все просто предельно просто

string.Length

И вообще, вопросы по с#, лучше задать MSDN, там полный справочник по языку
451 -870-7(три)6. Выполняю работы на заказ, гарант честности - ВМ аттестат с 60+ БЛ без претензий
Xeonc вне форума Ответить с цитированием
Старый 26.10.2010, 20:35   #3
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

на си шарп все просто и легко
после переменной типа строки поставь точку и выпадет список, найди там слово length - это и будет длина строки
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 26.10.2010, 20:40   #4
kloffelin
Пользователь
 
Регистрация: 21.02.2010
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Xeonc Посмотреть сообщение
В c#, все просто предельно просто

string.Length

И вообще, вопросы по с#, лучше задать MSDN, там полный справочник по языку
Ааа! Огромное преогромное сорри! Я не указал что мне нельзя использовать стандартные функции для строк. Извиняйте. А про Length я бы прогуглил.. А в этом случае яндекс не помощник
kloffelin вне форума Ответить с цитированием
Старый 26.10.2010, 20:44   #5
Xeonc
Форумчанин
 
Регистрация: 20.10.2010
Сообщений: 143
По умолчанию

В массивах в c# не используется нуль терминатор.

s[i]!=null - при этом условии, у вас вероятно выскакивает indexOutOfRange Exception?

попробуйте поместить этот цикл в блок try{} catch{}. Сейчас подумаю, как можно было бы красивее оформить
451 -870-7(три)6. Выполняю работы на заказ, гарант честности - ВМ аттестат с 60+ БЛ без претензий
Xeonc вне форума Ответить с цитированием
Старый 26.10.2010, 20:50   #6
kloffelin
Пользователь
 
Регистрация: 21.02.2010
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Xeonc Посмотреть сообщение
В массивах в c# не используется нуль терминатор.

s[i]!=null - при этом условии, у вас вероятно выскакивает indexOutOfRange Exception?

попробуйте поместить этот цикл в блок try{} catch{}. Сейчас подумаю, как можно было бы красивее оформить
да. пишет что индекс вышел за пределы массива.
а что такое try{} и catch{}?
спасибо что согласились помочь
kloffelin вне форума Ответить с цитированием
Старый 26.10.2010, 20:53   #7
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

try - это обработка исключений
в блоке catch - как среагировать на определнную ошибку
т.е. помещаем цикл в блок try
в блоке catch получаем ошибку и если это ощибка выхода за предел массива, то в переменной цикла будет длина строки
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 26.10.2010, 20:55   #8
Xeonc
Форумчанин
 
Регистрация: 20.10.2010
Сообщений: 143
По умолчанию

try catch - это конструкция работы с исключениями.

Как пример - вот вы перебираете массив символов, массив закончился, и следующего символа нет. Рантайм естественно сигналит о том, что вы обращаетесь к несуществующему элементу, но блок try{} catch{} позволяет исключение перехватить, и обработать, не вызывая сбоя программы в целом.

В вашем случае - это может помочь, т.к. программа посчитает количество элементов, словит исключение, прервет цикл и отработает до конца. Но решение не самое удачное, может кто-то посоветует лучше, просто иногда ставят в тупик задачи, при которых предлагается отказаться от привычных удобств языка
451 -870-7(три)6. Выполняю работы на заказ, гарант честности - ВМ аттестат с 60+ БЛ без претензий
Xeonc вне форума Ответить с цитированием
Старый 26.10.2010, 20:55   #9
Xeonc
Форумчанин
 
Регистрация: 20.10.2010
Сообщений: 143
По умолчанию

try catch - это конструкция работы с исключениями.

Как пример - вот вы перебираете массив символов, массив закончился, и следующего символа нет. Рантайм естественно сигналит о том, что вы обращаетесь к несуществующему элементу, но блок try{} catch{} позволяет исключение перехватить, и обработать, не вызывая сбоя программы в целом.

В вашем случае - это может помочь, т.к. программа посчитает количество элементов, словит исключение, прервет цикл и отработает до конца. Но решение не самое удачное, может кто-то посоветует лучше, просто иногда ставят в тупик задачи, при которых предлагается отказаться от привычных удобств языка
451 -870-7(три)6. Выполняю работы на заказ, гарант честности - ВМ аттестат с 60+ БЛ без претензий
Xeonc вне форума Ответить с цитированием
Старый 26.10.2010, 21:09   #10
kloffelin
Пользователь
 
Регистрация: 21.02.2010
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Xeonc Посмотреть сообщение
try catch - это конструкция работы с исключениями.

Как пример - вот вы перебираете массив символов, массив закончился, и следующего символа нет. Рантайм естественно сигналит о том, что вы обращаетесь к несуществующему элементу, но блок try{} catch{} позволяет исключение перехватить, и обработать, не вызывая сбоя программы в целом.

В вашем случае - это может помочь, т.к. программа посчитает количество элементов, словит исключение, прервет цикл и отработает до конца. Но решение не самое удачное, может кто-то посоветует лучше, просто иногда ставят в тупик задачи, при которых предлагается отказаться от привычных удобств языка
согласен.. напряжно вместо одного слова придумывать целую функцию...
а как мой код должен выглядеть с использованием try{} и catch{} ?

Код:
static int strlength(string s)
        {
           int _i=0;
           int len=0;
            while (s[_i] != null)
            {
                len++;
                _i++;
            }
            return len;
        }

Последний раз редактировалось kloffelin; 26.10.2010 в 21:15.
kloffelin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск длины строки beda Microsoft Office Word 5 21.06.2010 14:27
Способы получения ссылки на ячейку при известном номере строки. Tidus Microsoft Office Excel 5 08.06.2010 09:33
Строки неизвестной длины в си abr_question Общие вопросы C/C++ 18 22.01.2010 00:26
Считывание строки неограниченной длины (Си) 0kopok Помощь студентам 6 05.10.2009 20:46