0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 23
|
|||||||||||
1 | |||||||||||
Как установить конец строки при своей реализации функции strcpy()?14.04.2016, 17:34. Показов 1569. Ответов 17
Метки нет (Все метки)
Доброго времени суток, попробовал сам реализовать функцию strcpy().
Программа работоспособная, но интересует один момент. Это рабочий вариант. Кликните здесь для просмотра всего текста
А при такой записи компилятор начинает ругаться, почему? Кликните здесь для просмотра всего текста
0
|
14.04.2016, 17:34 | |
Ответы с готовыми решениями:
17
Объясните цикл в реализации функции strcpy Как установить курсор в конец строки? Как установить курсор в конец строки в Memo? Как в комбобоксе программно установить курсор в конец строки? |
7785 / 6553 / 2983
Регистрация: 14.04.2014
Сообщений: 28,621
|
||||||
14.04.2016, 17:39 | 2 | |||||
Сообщение было отмечено BeetleGold как решение
Решение
Так попробуй:
1
|
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 23
|
|
14.04.2016, 17:57 [ТС] | 3 |
Спасибо, помогло.
Так разве конец строки не устанавливается автоматически?
0
|
7785 / 6553 / 2983
Регистрация: 14.04.2014
Сообщений: 28,621
|
|
14.04.2016, 21:29 | 4 |
Если ты сам символы копируешь, то кто его установит-то?
0
|
Вездепух
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,052
|
|
14.04.2016, 22:30 | 5 |
0
|
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 23
|
||||||
15.04.2016, 12:54 [ТС] | 6 | |||||
Кликните здесь для просмотра всего текста
Возьмем к примеру эту программу. При инициализации функции mystrlen(), цикл for использует массив str[i] как выражение. Массиву str[i] передается строка "PRIVET VSEM", как только строка заканчивается цикл прекращается (а закончится он в том случае ели выражение станет ложным), следовательно после строки автоматически устанавливается нулевой элемент. При выполнении программы на экране выведется (dlina stroki PRIVET VSEM ravna: 11)
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
15.04.2016, 13:05 | 7 |
BeetleGold, скопируй в свой массив сначала длинную строку, выведи на экран. Потом скопируй в этот же масссив короткую строку. выведи на экран (можно и длины вывести тоже).
Добавлено через 29 секунд В одной программе, конечно же.
0
|
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 23
|
|
15.04.2016, 13:05 [ТС] | 8 |
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
15.04.2016, 13:09 | 9 |
Об этом. Твоя функция копирования не копирует завершающий ноль. А должна.
0
|
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 23
|
||||||
15.04.2016, 13:21 [ТС] | 10 | |||||
Все понял что вы пытались до меня донести
Как то так получилось Кликните здесь для просмотра всего текста
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|||||||||||
15.04.2016, 13:24 | 11 | ||||||||||
Сообщение было отмечено BeetleGold как решение
Решение
+1 лишняя.
1
|
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 23
|
|
15.04.2016, 13:33 [ТС] | 12 |
да, логично что-то я засуетился.
не соображу. это получается как только str[i] укажет на нулевой элемент,цикл же все равно остановится Аааа, дошло. Но до того как цикл завершится t[i] уже передастся нулевой элемент
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
15.04.2016, 13:34 | 13 |
1
|
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 23
|
|
15.04.2016, 13:38 [ТС] | 14 |
0
|
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||||||
15.04.2016, 17:21 | 16 | |||||
А можно так:
0
|
Вездепух
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,052
|
|
15.04.2016, 18:10 | 17 |
Нулевой элемент в данном случае действительно является неявно ("автоматически") добавленным элементом строкового литерала
"PRIVET VSEM" . Т.е. компилятор сам добавляет в строковые литералы замыкающий ноль. Но это распространяется только на строковые литералы. Больше никуда компилятор "автоматически" замыкающий ноль добавлять не станет. Поэтому если вы хотите куда-то самостоятельно скопировать содержимое строкового литерала, то копировать этот ноль вам тоже придется явно и самостоятельно.
1
|
0 / 0 / 0
Регистрация: 15.10.2015
Сообщений: 23
|
|
15.04.2016, 18:16 [ТС] | 18 |
0
|
15.04.2016, 18:16 | |
15.04.2016, 18:16 | |
Помогаю со студенческими работами здесь
18
Ошибка компиляции при вызове функции strcpy Как определить конец строки при вводе с консоли? Объяснить неожиданное поведение программы при использовании массивов и функции strcpy() Как задать конец строки и прекратить при вводе определённого символа? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |