powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Сравнить два символа
25 сообщений из 98, страница 1 из 4
Сравнить два символа
    #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
Сравнить два символа
    #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
Сравнить два символа
    #33962964
сикока
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для приличия хоть чёнить по си прочитай:)
...
Рейтинг: 0 / 0
Сравнить два символа
    #33962966
вопрозь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сикокадля приличия хоть чёнить по си прочитай:)
Прочитал. Работаю на Си с железом, а вот это не пробовал ))))
...
Рейтинг: 0 / 0
Сравнить два символа
    #33962973
сикока
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сикокадля приличия хоть чёнить по си прочитай:)

и бред про char* не слушай:)
...
Рейтинг: 0 / 0
Сравнить два символа
    #33962974
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мля. работать с железом на си, не зная языка?
...
Рейтинг: 0 / 0
Сравнить два символа
    #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
Сравнить два символа
    #33962989
Вопрозь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aklinмля. работать с железом на си, не зная языка?
Прикинь, и такое бывает. Сравнения не знаю. На JAVA и Delphi знаю, а на СЯХ не найду.
...
Рейтинг: 0 / 0
Сравнить два символа
    #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
Сравнить два символа
    #33963017
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ы?
...
Рейтинг: 0 / 0
Сравнить два символа
    #33963034
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sscanf
...
Рейтинг: 0 / 0
Сравнить два символа
    #33963040
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
яуж вручную прописал, да и так быстрее будет

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

ЗЫ
+-1 символ

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

ЗЫ
+-1 символ

А чего не инкремент индекса?
я написал наобум код, поэтому сообщаю: могут быть ошибки +1 или -1 символ
...
Рейтинг: 0 / 0
Сравнить два символа
    #33963109
сикока
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
блин, умники, о херне трепаться могем, а как что чуть выше уровня новичка спросят, молчание:)
...
Рейтинг: 0 / 0
Сравнить два символа
    #33963116
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спрашивай именно то, что выше уровня новичка, те. не найдется в поиске и зависит от опыта например
...
Рейтинг: 0 / 0
Сравнить два символа
    #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
Сравнить два символа
    #33963142
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гы как накручено
...
Рейтинг: 0 / 0
Сравнить два символа
    #33963144
вопрозь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aklinгы как накручено
Не думаю, что предложенное выше лучше!)))
Но как вариант сойдет, тем более за незнанием нужных строковых функций. Проще наверно RegEx воспользоваться.
...
Рейтинг: 0 / 0
Сравнить два символа
    #33963150
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если только строковые фукнции копируют по 4 байта, не меньше, а иначе мой код размером не уступил, да и быстрее будет (у тебя вызовов перевызовов много)
...
Рейтинг: 0 / 0
Сравнить два символа
    #33963166
вопрозь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aklinесли только строковые фукнции копируют по 4 байта, не меньше, а иначе мой код размером не уступил, да и быстрее будет (у тебя вызовов перевызовов много)
Я в том смысле, что и твой и мой вариант всё равно не рациональны. Уверен, что есть лучше варианты. В моем плохо, что приходиться преобразовывать в другой тип переменную только для того, чтобы узнать на какой позиции пробел.
...
Рейтинг: 0 / 0
Сравнить два символа
    #33963195
сикока
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мы используем билдер, с этого надо и было начинать, а не слушать всякий бред про char* :)

зы, есть функция Pos :)
...
Рейтинг: 0 / 0
Сравнить два символа
    #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
Сравнить два символа
    #33963284
Dmitrii K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оставьте AnsiString в покое )
string.h зачем обидели?
Код: plaintext
1.
2.
3.
    char *name="Abcd Efjh",*s;
    strtok(name," ");
    s=strtok(NULL," ");
...
Рейтинг: 0 / 0
Сравнить два символа
    #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
25 сообщений из 98, страница 1 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / Сравнить два символа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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