На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Содержимое char
    Может вопрос и ламерский но не как не могу сделать следущее:
    хочу узнать, что хранится в char.
    Если там MSG, то {} иначе то {}
    вот код:


    char Buffer[1000];
    int n=recv(Accept_Socket,Buffer,1000,NULL);
    Buffer[n]=NULL;
    char *u;
    u=Buffer;
    if( первые 3 символа MSG,тогда)
    {

    }
    else
    {

    }

    как мне условие кодом записать?
      strspn, memcmp, есть и другие
        if( 0 == strncmp( Buffer, "MSG", strlen( "MSG" ) ) )
        {
        одинаковы
        }
        else
        {
        неодинаковы
        }
          Не подходят ВСЕ эти функции...как они сравнивают???
          Вот смотрите (слева что присылаю, справа с чем сравниваю):

          "MSG"->"MSG"==0 \\\Равны согласен
          "MSG"->"555" == 1 \\\Не равны, согласен
          "MSG->"MSG1"==-1 \\\Это как понимать?? что такое -1?
          "MSG1"->"MSG"==0 \\А тут что??? почему ноль?? они же не равны??

          Какие функции могут реально сравнить два буфере???

            эти функции идут по обеим строкам пока не встретят первый не похожий символ.

            0 - значит равно до какого-то символа. это определяется тем какую длинну ты задашь для сравнения.
            т.е. memcpy("12345a", "12345b", 5) сравнит первые пять символов, а дальше завершит работу. Хоть строки и разные, но после пятого символа они не проверяются и возвращается ноль.

            +1, -1 означает что проверка не удалась, а знак показывает напрвление для сортировки строк.

            А если ты хочешь проверить не часть двух строк, а строки до последнего знака, то используй функцию strcmp()
            т.е. strcmp("aaa", "bbb") - она сама вычислит длину строки и если вернет ноль, то это действительно идентичные строки.
              Цитата (Leprecon @ 23.11.03, 01:04)
              эти функции идут по обеим строкам пока не встретят первый не похожий символ.

              0 - значит равно до какого-то символа. это определяется тем какую длинну ты задашь для сравнения.
              т.е. memcpy("12345a", "12345b", 5) сравнит первые пять символов, а дальше завершит работу. Хоть строки и разные, но после пятого символа они не проверяются и возвращается ноль.

              +1, -1 означает что проверка не удалась, а знак показывает напрвление для сортировки строк.

              А если ты хочешь проверить не часть двух строк, а строки до последнего знака, то используй функцию strcmp()
              т.е. strcmp("aaa", "bbb") - она сама вычислит длину строки и если вернет ноль, то это действительно идентичные строки.

              спасибо.......все изумительно понял.......
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0200 ]   [ 16 queries used ]   [ Generated: 20.04.24, 02:51 GMT ]