Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Сравнить два символа / 25 сообщений из 98, страница 1 из 4
04.09.2006, 16:59
    #33962943
вопрозь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
Как сравнить два символа в Си.

Хочу осуществить следующий алгоритм. В дельфи выглядит так
name:='Юрий Иванович';
Код: plaintext
1.
2.
3.
4.
5.
for x:= 0  to length(name) do
    begin
    if name[x] = ' ' then
    FirstName := copy(name, 0 ,x- 1 );
    MiddleName := copy(name,x+ 1 ,length(name) - x);
    end;
т.е. разбить строку из двух слов, разделенных пробелом на слова
а вот этот момент на Си не понятен
Код: plaintext
if name[x] = ' ' then
...
Рейтинг: 0 / 0
04.09.2006, 17:04
    #33962962
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
см что-нибудь вроде strcpy

Код: plaintext
1.
2.
3.
4.
5.
6.
char* s = "Ivanov Ivan";
int i;
for( i= 0 ; s[i]!= 0  && s[i]!=' '; i++);

вот здесь strcpy или вроде того

...
Рейтинг: 0 / 0
04.09.2006, 17:04
    #33962964
сикока
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
для приличия хоть чёнить по си прочитай:)
...
Рейтинг: 0 / 0
04.09.2006, 17:05
    #33962966
вопрозь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
сикокадля приличия хоть чёнить по си прочитай:)
Прочитал. Работаю на Си с железом, а вот это не пробовал ))))
...
Рейтинг: 0 / 0
04.09.2006, 17:06
    #33962973
сикока
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
сикокадля приличия хоть чёнить по си прочитай:)

и бред про char* не слушай:)
...
Рейтинг: 0 / 0
04.09.2006, 17:06
    #33962974
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
мля. работать с железом на си, не зная языка?
...
Рейтинг: 0 / 0
04.09.2006, 17:07
    #33962979
вопрозь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
Aklinсм что-нибудь вроде strcpy

Код: plaintext
1.
2.
3.
4.
5.
6.
char* s = "Ivanov Ivan";
int i;
for( i= 0 ; s[i]!= 0  && s[i]!=' '; i++);

вот здесь strcpy или вроде того



Это же "копирование сроки в строку", а мне надо сравнение символов
...
Рейтинг: 0 / 0
04.09.2006, 17:09
    #33962989
Вопрозь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
Aklinмля. работать с железом на си, не зная языка?
Прикинь, и такое бывает. Сравнения не знаю. На JAVA и Delphi знаю, а на СЯХ не найду.
...
Рейтинг: 0 / 0
04.09.2006, 17:10
    #33962998
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
вопрозь Aklinсм что-нибудь вроде strcpy

Код: plaintext
1.
2.
3.
4.
5.
6.
char* s = "Ivanov Ivan";
int i;
for( i= 0 ; s[i]!= 0  && s[i]!=' '; i++);

вот здесь strcpy или вроде того



Это же "копирование сроки в строку", а мне надо сравнение символов

обячно рядом с strcpy дают копирование от до.

ты хоть немеого поискать можешь?

экспромт, твою мать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
char* s = "Ivanov Ivan";
int i;
char *s1=new char[strlen(s)+ 1 ];
char *s2=new char[strlen(s)+ 1 ];
for( i= 0 ; s[i]!= 0  && s[i]!=' '; i++){
s1[i]=s[i];
}

s1[i]= 0 ;

s=s+i+ 1 ; //гыгы смешно, но обычно работает

for(i= 0 ; s[i]!= 0 ; i++){
s2[i]=s[i];
}

s2[i]= 0 ;
...
Рейтинг: 0 / 0
04.09.2006, 17:13
    #33963017
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
ы?
...
Рейтинг: 0 / 0
04.09.2006, 17:15
    #33963034
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
sscanf
...
Рейтинг: 0 / 0
04.09.2006, 17:16
    #33963040
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
яуж вручную прописал, да и так быстрее будет

ЗЫ
+-1 символ
...
Рейтинг: 0 / 0
04.09.2006, 17:19
    #33963056
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
Aklinяуж вручную прописал, да и так быстрее будет

ЗЫ
+-1 символ

А чего не инкремент индекса?
...
Рейтинг: 0 / 0
04.09.2006, 17:21
    #33963066
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
Akh Aklinяуж вручную прописал, да и так быстрее будет

ЗЫ
+-1 символ

А чего не инкремент индекса?
я написал наобум код, поэтому сообщаю: могут быть ошибки +1 или -1 символ
...
Рейтинг: 0 / 0
04.09.2006, 17:31
    #33963109
сикока
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
блин, умники, о херне трепаться могем, а как что чуть выше уровня новичка спросят, молчание:)
...
Рейтинг: 0 / 0
04.09.2006, 17:32
    #33963116
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
спрашивай именно то, что выше уровня новичка, те. не найдется в поиске и зависит от опыта например
...
Рейтинг: 0 / 0
04.09.2006, 17:41
    #33963138
вопрозь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
Сам оказывается "городить умею", жаль что не рационально.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
AnsiString ResultString = "Юрий Иванович";
char * text = ResultString.c_str();
int i= 0 ;
while (text[i]!=' ')
{
    i++;
}
AnsiString FirstName = ResultString.SubString( 0 ,i);
AnsiString MiddleName = ResultString.SubString(i+ 1 ,ResultString.Length());
ShowMessage("Имя: " + Trim(FirstName));
ShowMessage("Отчество: " + Trim(MiddleName));
...
Рейтинг: 0 / 0
04.09.2006, 17:42
    #33963142
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
гы как накручено
...
Рейтинг: 0 / 0
04.09.2006, 17:44
    #33963144
вопрозь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
Aklinгы как накручено
Не думаю, что предложенное выше лучше!)))
Но как вариант сойдет, тем более за незнанием нужных строковых функций. Проще наверно RegEx воспользоваться.
...
Рейтинг: 0 / 0
04.09.2006, 17:45
    #33963150
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
если только строковые фукнции копируют по 4 байта, не меньше, а иначе мой код размером не уступил, да и быстрее будет (у тебя вызовов перевызовов много)
...
Рейтинг: 0 / 0
04.09.2006, 17:48
    #33963166
вопрозь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
Aklinесли только строковые фукнции копируют по 4 байта, не меньше, а иначе мой код размером не уступил, да и быстрее будет (у тебя вызовов перевызовов много)
Я в том смысле, что и твой и мой вариант всё равно не рациональны. Уверен, что есть лучше варианты. В моем плохо, что приходиться преобразовывать в другой тип переменную только для того, чтобы узнать на какой позиции пробел.
...
Рейтинг: 0 / 0
04.09.2006, 17:53
    #33963195
сикока
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
мы используем билдер, с этого надо и было начинать, а не слушать всякий бред про char* :)

зы, есть функция Pos :)
...
Рейтинг: 0 / 0
04.09.2006, 18:07
    #33963251
вопрозь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
сикокамы используем билдер, с этого надо и было начинать, а не слушать всякий бред про char* :)

зы, есть функция Pos :)
Черт, я про неё и забыл, спасибо.)))

Код: plaintext
1.
2.
AnsiString *symbol = new AnsiString(" ");
AnsiString FirstName = ResultString.SubString( 0 ,ResultString.Pos(*symbol));
AnsiString MiddleName = ResultString.SubString(ResultString.Pos(*symbol) +  1 ,ResultString.Length());
...
Рейтинг: 0 / 0
04.09.2006, 18:14
    #33963284
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
Оставьте AnsiString в покое )
string.h зачем обидели?
Код: plaintext
1.
2.
3.
    char *name="Abcd Efjh",*s;
    strtok(name," ");
    s=strtok(NULL," ");
...
Рейтинг: 0 / 0
04.09.2006, 18:19
    #33963303
сикока
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнить два символа
ну ё моё, зачем char*?
если есть средство, его нужно использовать.

Код: plaintext
1.
2.
3.
4.
5.
//если в строке гарантированно два слова через пробел, без начальных пробелов
AnsiString str = "Маша Лена";

AnsiString str_masha = str.SubString(  1 , str.Pos( ' ' ) -  1  );
AnsiString str_lena =  str.SubString( str.Pos( ' ' ) +  1 , str.Length() -  str.Pos( ' ' ) );
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Сравнить два символа / 25 сообщений из 98, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]