8 / 8 / 3
Регистрация: 01.03.2013
Сообщений: 85
|
||||||||||||||||
1 | ||||||||||||||||
Подскажите, почему не работает strcpy_s()11.03.2013, 23:57. Показов 4133. Ответов 10
Метки нет (Все метки)
Вот код
0
|
11.03.2013, 23:57 | |
Ответы с готовыми решениями:
10
Не работает strcat_s с strcpy_s Не работает удаление пробелов в строке! Подскажите пожалуйста, почему не работает? Подскажите почему не работает? Подскажите почему не работает |
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
12.03.2013, 11:43 | 3 |
То, что это поделка от MS не значит, что она не должна работать как надо.
Судя по описанию второй аргумент должен быть равен размеру приемного буфера, а не размеру копируемой строки (Size of the destination string buffer). Я бы вообще вынес strlen(pcStr)+1 в отдельную переменную и использовал ее и в new, и при копировании. С strncpy() не стоит забывать, что может быть не добавлен \0 в конец строки, если размер исходной строки больше буфера. Что собственно и происходит, т.к. потеряна +1.
1
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
12.03.2013, 12:19 | 5 | |||||
Сравните варианты:
0
|
Неэпический
|
||||||
12.03.2013, 12:25 | 6 | |||||
Приемный буфер должен быть не меньше, чем исходная строка.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
12.03.2013, 12:40 | 8 | |||||
Я про код ТС с моим исправлением:
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
12.03.2013, 12:48 | 9 | |||||
при вызове strncpy() не копируется последний \0-символ.
Чтобы это проверить добавьте м/у 2 и 3 строкой такую:
1
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||||||||||||
12.03.2013, 13:11 | 10 | |||||||||||||||
Тогда так:
0
|
8 / 8 / 3
Регистрация: 01.03.2013
Сообщений: 85
|
||||||
12.03.2013, 13:50 [ТС] | 11 | |||||
Всем спасибо. Исправил следующим образом и все заработало
0
|
12.03.2013, 13:50 | |
12.03.2013, 13:50 | |
Помогаю со студенческими работами здесь
11
Подскажите почему не работает Подскажите почему не работает Подскажите, почему не работает оператор if Подскажите, почему это работает!?) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |