C++ для начинающих Символьный массив

Сайт не является учебником по программированию. Это только небольшой авторский сборник информации в помощь начинающим программистам.

  Начинал писать скорее «между делом», а получится может очень полезным материалом. Просто возникло желание в программе использовать два варианта ввода в символьный массив значений. Первый вариант с клавиатуры, второй вариант из переменной. И оба варианта ввода в одной программе в один массив.

  Вообще когда вы объявляете переменную-массив типа char, то компилятор автоматически определяет нужную длину для работы с таким массивом. При этом всё что есть в массиве, всё это остается в памяти и хоть вы и не видите этого, но вся строка забита информационным мусором. Многие книги об этом пишут, но вместе с этим многие игнорируют показательный материал, который даст понять что творится в символьном массиве на самом деле.

  Для быстрого восприятия материала необходимы знания

    Цикл for в С++ для начинающих
    Функции в C++ для начинающих
    Передача параметров в функции в C++ для начинающих

Код C++ Проверка всей строки посимвольно после объявления

  В принципе маленький и простой код. Внутри функции main() объявляется массив типа char. Если попытаться вывести этот массив как строку (cout<<S<<endl) сразу после того как объявлен, компилятор сам определяет, что нужно выводить на экран (Произойдет вывод на экран пустой строки). Если же проверить всю строку посимвольно, то можно увидеть сюрпризы. Для вывода реальной строки на экран была написана отдельная функция full_S., которая занимается посимвольным выводом реальных значений всей строки.

  Таким образом любой может увидеть реальную ситуацию работы с символьным массивом. Хотя компилятор и выводит на экран чистую строку, на самом деле это всего-лишь иллюзорная чистота, и вся строка может быть набита информационным мусором. Очень часто это первая причина ошибок

  У любого кто понял вышеизложенное, может возникнуть стандартный вопрос: «Как же избавиться от этого непорядка». Ответ очень прост. Использовать функцию очистки массива или соорудить велосипед и написать свою.

Код C++ Очистка массива с помощью memset

  Посмотрев на функцию memset несложно понять какие параметры ей нужны.
memset(Массив, Нулевое значение, Размерность массива) При обработке символов в качестве нулевого значения можно использовать 0‘, но так можно перепутать куда слэш наклонен. Можно написать memset(Массив,0,Размерность) Но мне просто удобно указывать NULL, поэтому я использовал этот NULL в коде

  Теперь смело можно писать программу для ввода символьного массива с клавиатуры и переприсваивание в него значения изнутри программы.
Код C++ Считать строку из клавиатуры и переприсвоить ей значение из строковой константы

  Таким образом, нужно следить за тем чтобы в строке не было того чего не нужно. Чтобы символьный массив/строка обрабатывались лучше, то перед занесением туда информации очищайте данные такого массива от всякого информационного мусора. Написание лишних строчек кода очистки массива программу вам скорее всего не испортит, а вот избежать возможных ошибок должно помочь.

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

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

2 комментария: C++ для начинающих Символьный массив

  • Михаил говорит:

    Хотелось бы дополнить (ибо меня это заинтересовало) — чтобы программа читала строки с пробелом, можно написать вместо «cin>>S» «cin.getline(S,maxL)»

  • Иван Иванов говорит:

    Если объявить массив:

    char S[maxL] = {};

    то ничего очищать не придётся. Он автоматически заполнится символами NULL уже на стадии объявления.

    Только вот я не знаю, поддерживает ли эту возможность Borland C++ 3. Но новые компиляторы точно поддерживают.

    Автор сайта отвечает
    Странно, что у меня один раз оно не сработало в mingw. Потом всегда работать стало. Но 1 раз не сработал.

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

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

Поиск

 
     
Яндекс.Метрика

НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

В чем заключается многозадачность Windows? Она глючит и pаботает одновpеменно.

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

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