С++ для начинающих Передача символьного массива в функцию

Иногда возникает необходимость передать символьный массив в функцию для обработки. Но при незнании материала это приводит к разным попыткам реализации, чаще не работающим чем рабочим. Поэтому, думаю, этот материал нельзя пропускать

  • Код C++ Обычная передача символьного массива в функцию

  Достаточно простой для восприятия код. Следует обратить внимание, что внутри функции первым является нулевой элемент. Просто компилятор воспринимает такую передачу как передачу в функцию обычного массива. В параметрах для функции не нужно указывать размер строки, достаточно прописать тип char, имя переменной-массива и пустые квадратные скобки. Передача массива в функцию теперь выполняется с очень простым указанием переменной (имени массива)

  • Код C++ Передача символьного массива в функцию с помощью указателя

  • Код C++ Передача символьного массива в функцию с помощью ссылки

  Очень похоже на передачу по указателю. Будьте внимательны к тому как написано в скобках

Как закрепляющий материал решим простую задачу. Есть, например строка из больших и маленьких символов, нужно все символы этой строки сделать большими. Для перевода символа в верхний регистр существует функция toupper, описанная в файле ctype.h, её мы и будем использовать.

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

8 комментариев: С++ для начинающих Передача символьного массива в функцию

  • David говорит:

    Спасибо.




    0



    0
  • Dj_Dance говорит:

    const maxL=256; — не указан тип..
    правильно — const int maxL=256;




    0



    0
  • Artiom говорит:

    Я уже почти обрадовался что нашел то что искал, но наткнулся на такую строку Вашего кода:

    Есть вот такой код на C#

    И вот такие попытки его переписать на плюсы:

    Я конечно понимаю, что скорее всего здесь есть какая-то фишка, но искать её уже руки опускаются. Можете подсказать что-нибудь?




    0



    0
    • admin говорит:

      C кавычками не очень понятно. Надо просто скопировать код и вставить его не в cpp теги, а в пхп теги. Просто копируется, вставляется в поле комментария и руками дописывается открывающий и закрывающий тег.
      [php]КОД[/php]
      Иначе мне приходится расшифровывать код и не всегда удается. ВОт у Вас кавычек много и я не очень понял,какие где. А еще пришлось много лишнего затирать.

      Я скорее всего могу подсказать, только нужно понять, что требует подсказки, а я вынужден угадывать Ваш код.
      Хотя и не факт, что могу. Я с С# вообще не знаком и не знаю что должно получится (что принимается, что отдавать).




      0



      0
  • Artiom говорит:

    Ок. Большая часть расшифрована верно. Ваш код, который мне не подошел:

    Суть кода в следующем — нужно сформировать набор char в кодировке 866 (в С# как раз побайтно происходит перекодирование) и отправить их сокетом. Есть просто самописное серверное приложение, с которым надо общаться вот так. То что в C# написано как (char)0, я на C++ написал как ». На сколько я понимаю это одно и то же




    0



    0
  • Artiom говорит:

    Оно издевается. Не дает NULL символ написать в коде.




    0



    0
    • admin говорит:

      нулевой символ а С++

      И в начале нулевые символы не нужны, их по сути нет. Если они будут вначале, то цикл не успеет начаться, он сразу завершится.

      так что для передачи логичнее такой массив

      нуль символ в конец
      вначале пустых просто не писать
      ну а посередине пробел, иначе 5 не зацепится при использовании того символа о котором Вы пишете
      а сам цикл можно писать вот так

      если все-таки нужно передавать нулевые символы именно как нулевые, в том числе и в начале, то можно придумать свой признак окончания массива символов, например ‘\b’.
      Это выглядит приблизительно так




      0



      0
  • Аноним говорит:

    Здравствуйте, подскажите пожалуйста, как сделать прототип этой вещи:

    void get_array(char (&S)[maxL])
      {
        S[0]='9'; //изменили первый символ 
      }

    подходит только такой вариант,

    void get_array(char(&S)[maxL]);

    а без S или maxL не проходит




    0



    0

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     

Случайная книга в электронном формате

Яндекс.Метрика
НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Ревнивая жена прочитала сообщения мужа в Фейсбуке и лайкнула его сковородкой.

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок