Копировать строку без strcpy

Вы не указали, какой макет вы используете, поэтому хороший макет для реализации будет GridBagLayout . Демонстрация на сайте oracle отлично подходит для начала.

И короткий пример:

JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
panel.add(new JLabel("Label 1:"), c);
c.gridx = 1;
c.gridy = 0;
panel.add(new JTextField("TextField 1"), c);
c.gridx = 0;
c.gridy = 1;
panel.add(new JLabel("Label 2:"), c);
c.gridx = 1;
c.gridy = 1;
panel.add(new JTextField("TextField 2"), c);

2
задан chqrlie 28 February 2019 в 20:57
поделиться

1 ответ

Вы просто копируете начальный адрес str в temp. Это означает, что любые изменения в temp будут отражены и в str, поскольку они указывают на одну и ту же память. Он по-настоящему не эмулирует strcpy(dest, src), что создает отдельную копию строки с нулевым символом в конце, на которую указывает src, начиная с ячейки памяти, на которую указывает dest.

Итак, чтобы ответить на ваш вопрос как на вопрос: нет.

Если ваше намерение состоит в том, чтобы избежать времени выполнения O (n) strcpy, это также то, что вы не можете сделать на самом деле.

Если для программирования или выполнения упражнения вам потребуется создать код, функционально эквивалентный strcpy, вот высокоуровневое описание алгоритма, который он использует:

  1. Скопируйте символ в *source - *destination
  2. Если только что скопированный символ был нулевым терминатором, выйдите.
  3. В противном случае увеличьте указатель до source и увеличьте указатель до destination.
  4. Перейти к шагу 1.
0
ответ дан Govind Parmar 28 February 2019 в 20:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: