#38. Строковые функции сравнения, поиска символов и фрагментов | Язык C для начинающих

Поділитися
Вставка
  • Опубліковано 25 лис 2024

КОМЕНТАРІ • 18

  • @andredru4278
    @andredru4278 10 місяців тому +1

    Спасибо. Да уж, мощно!

  • @РусланКарнеенко
    @РусланКарнеенко 9 місяців тому +1

    Спасибо

  • @dariatroian9950
    @dariatroian9950 Рік тому +3

    вам нужно быть преподавателем в вузе!

  • @fedc_
    @fedc_ 7 місяців тому +2

    Для чего в первом примере объявлять указатели? Почему сразу не итерироваться по исходным строкам?

  • @alittleprince
    @alittleprince Рік тому +1

    какой еще вариант алгоритма сравнения строк есть? цикл for вы уже применили... менять конструкцию if это наверное не то так как очень просто..., может while...? но у меня не получается в нем нужные условия задать для корректной работы, дайте хоть направление в какую сторону думать...что вы имели ввиду?
    #include
    int main(void)
    {
    char s1[12] = "Hello";
    char s2[10] = "Hello";
    const char *str1 = s1;
    const char *str2 = s2;
    int i = 0;
    for(; str1[i] != '\0' || str2[i] != '\0'; ++i) {
    if(str1[i] != str2[i]) {
    puts("Strings are not equal!");
    return 0;
    }
    }
    puts("Strings are equal!");
    return 0;
    }

  • @jamjam3337
    @jamjam3337 Рік тому +1

    👏👍

  • @getluckers6004
    @getluckers6004 Рік тому +1

    Здравствуйте.
    Планируйте записать курс по Си#?

    • @selfedu_rus
      @selfedu_rus  Рік тому +1

      пока нет

    • @umar119
      @umar119 8 місяців тому

      ​@@selfedu_ruspochemu

  • @alittleprince
    @alittleprince Рік тому +2

    ups....PLEASE HELP!
    Inside the loop 'for' you have inserted the double mark '&&'... is it not means the mark '&' (and)? and why you don't use there the mark '|' (or)?
    until one of them will be != '\0'; // isn't it?
    What do you mean by operator 'if' in the first case, are current chars of the two strings not equal or what? In the second case it is the same line...
    int i = 0; // auxiliary loop's counter;
    for(; str1[i] != '\0' && str2[i] != '\0'; ++i) // iterate the characters of strings (str1 and str2) until one of them will be != '\0';
    if(str1[i] != str2[i]) { // checking if a current char of str1 is not equal a current char of str2;

    • @lashka1206
      @lashka1206 7 місяців тому

      && is AND operation. & is bitwise conjunction, the same thing with |.

  • @sladge17
    @sladge17 Рік тому +4

    На 1:30 проговаривается ИЛИ а пишется И.

    • @selfedu_rus
      @selfedu_rus  Рік тому +2

      Делаем цикл пока не дойдем до конца первой строки или второй строки. Все верно. При этом в условии цикла пишем И.

    • @sladge17
      @sladge17 Рік тому +5

      По логике верно, но разница между сказанным и написанным, в моменте, сбивает с толку.

    • @olegkomlev
      @olegkomlev 11 місяців тому +3

      Кстати, да. Путаница между союзами естественного языка и логическими операциями. Классический пример - запрос "Клиенты, живущие в Кентукки и Небраске" выдал "Клиентов нет", потому что никто не жил одновременно в двух штатах. Надо было набирать "в Кентукки ИЛИ Небраске". Аналогично, "Леди и джентльмены" - обращение не к человеку особого пола, в магазине "Овощи и фрукты" продают не только морковку (которая в некоторых странах считается овощем , а в других - фруктом).
      Союз И часто употребляется там, где, строго говоря, нужно ИЛИ. Кроме того, ИЛИ может означать как "включающее или", так и исключающее (либо - либо, но не оба вместе, т.е. XOR). Еще больше путаницы, когда дополнительно присутствует отрицание.
      Поэтому при составлении программы, лучше говорить не просто И (&&), а добавлять "одновременно": "икс положительно И игрек отрицательно одновременно". А для ИЛИ (||) полезно добавлять "или оба вместе (оба одновременно)".

    • @MK-xf9kg
      @MK-xf9kg 8 місяців тому +1

      да уж поймал диссонанс, получется уловие: если 1 строка не закончилась И вторая строка не закончилась --делаем, то есть 1*1 = 1 продолжаем. Если первая строка закончилась И вторая не закончилась стоп 1*0 = 0 фолс типа, и если использовать || (или) получаем остановку только если строки одинаковые по длине... 1 + 1 = 0.. я все правильно понял?

    • @cp0tyr
      @cp0tyr 5 місяців тому

      @@MK-xf9kg да